关于TCHAR和char转换的的问题,大家来看看
char szBuf[255];
if ((int)strlen(szBuf) > iMax)
这是一段不支持UNICODE的程序,想让它转成支持unicode的,于是
TCHAR szBuf[255];
此时不能用strlen了,该用什么呢?
_tcslen返回的是一size_t值不能和iMax比较大小,特求助大家,谢谢!
问题点数:20、回复次数:16Top
1 楼huaboy408(Thinking...)回复于 2004-08-04 13:42:22 得分 0
lstrlen如何?Top
2 楼aspnetwuxueyou(SHIP IT)回复于 2004-08-04 13:43:27 得分 10
strlen返回值也是size_t你怎么就比较了呢?Top
3 楼kvls(冰茶)回复于 2004-08-04 13:45:22 得分 10
strlen返回的也是size_t,上面不是使用了强制转换吗?
使用_tcslen强制转换不行?Top
4 楼yux007(yux007)回复于 2004-08-04 13:48:44 得分 0
使用_tcslen强制转换在这里有警告
warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
Top
5 楼aspnetwuxueyou(SHIP IT)回复于 2004-08-04 13:54:54 得分 0
#pragma warning( disable : 4267)Top
6 楼promaster(财源广进)回复于 2004-08-04 13:56:10 得分 0
也可以用(int)tcslen(szBuf)来得到.Top
7 楼promaster(财源广进)回复于 2004-08-04 13:57:51 得分 0
TCHAR szBuf[255];
_tcscpy(szBuf, "This is a test.");
int n = (int)_tcslen(szBuf);Top
8 楼zhaohuiguang(晓晓)回复于 2004-08-04 13:57:53 得分 0
可以Top
9 楼yux007(yux007)回复于 2004-08-04 13:59:33 得分 0
#pragma warning( disable : 4267)?
忽略这个警告?Top
10 楼lazygod(Use any item)回复于 2004-08-04 14:04:25 得分 0
把iMax定义为UINT即可。或者(UINT)iMax,如果你的iMax不可能小与零的话Top
11 楼yux007(yux007)回复于 2004-08-04 14:05:01 得分 0
TCHAR szBuf[255];
_tcscpy(szBuf, "This is a test.");
int n = (int)_tcslen(szBuf);
这不还是强制转换吗?Top
12 楼yux007(yux007)回复于 2004-08-04 14:07:25 得分 0
把iMax定义为UINT即可。或者(UINT)iMax,如果你的iMax不可能小与零的话
仍然警告:
warning C4267: '=' : conversion from 'size_t' to 'UINT', possible loss of data
Top
13 楼anyiflyer(代码在我心中!)回复于 2004-08-04 14:39:09 得分 0
tchar.h中
typedef char TCHAR;Top
14 楼yux007(yux007)回复于 2004-08-04 14:47:37 得分 0
typedef char TCHAR;
这不是掩耳盗铃嘛Top
15 楼lazygod(Use any item)回复于 2004-08-08 23:17:22 得分 0
typedef char TCHAR;
我记得还有一句:
typedef short int TCHAR;
仔细看看。
可能是typedef unsigned long size_t
你找找size_t的原始定义,或者换成ULONG试一下Top
16 楼yubo198(bobo)回复于 2004-09-20 19:34:00 得分 0
wcslen(TCHAR *)的应该可以了Top




