调用MultiByteToWideChar遇到的问题
char tempstr[20];
TCHAR IP[20];
memset(tempstr,0,sizeof tempstr);
strcpy(tempstr,"ac我的d");
MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR));
strcpy(tempstr,"192.168.1.200");
MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR)); //执行崩溃的代码
从配置文件中取过来的字符串如果中间含有中文的,执行没有问题,但只有assic的时候,居然崩溃了,搞了一天没有解决,哪位大哥看一下
函数:
BOOL MByteToWChar(LPCSTR cStr, LPWSTR wStr, DWORD dwSize)
{
// Get the required size of the buffer that receives the Unicode
// string.
DWORD dwMinSize;
dwMinSize = MultiByteToWideChar (CP_ACP, 0, cStr, -1, NULL, 0);
printf("----%d----------\n",dwMinSize);
if(dwSize < dwMinSize) return FALSE;
printf("----%d-%s---------\n",dwMinSize,cStr);
// Convert headers from ASCII to Unicode.
MultiByteToWideChar (CP_ACP, 0, cStr, -1, wStr,dwMinSize);
printf("--------------4\n");
return TRUE;
}
[解决办法]
LZ,我试了你给的代码,没有出错。我测试的代码如下:
{
char tempstr[20];
TCHAR IP[20];
memset(tempstr,0,sizeof tempstr);
strcpy(tempstr,"ac我的d");
MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR));
strcpy(tempstr,"192.168.1.200");
MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR)); //执行崩溃的代码
strcpy(tempstr,"assic");
MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR));
}
转换结果都正确的。
如果LZ的不正确,可能与系统相关。请参考下面的帖子:
http://topic.csdn.net/u/20080506/08/45c8a835-85f2-4427-a25f-e745197ee9e1.html?seed=824633417
[解决办法]
char tempstr[20];TCHAR IP[20]; memset(tempstr,0,sizeof tempstr); strcpy(tempstr,"ac我的d"); MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR));strcpy(tempstr,"192.168.1.200");MByteToWChar( tempstr,IP, sizeof(IP)/sizeof(TCHAR)); //执行崩溃的代码
[解决办法]
我的测试机器是CE5中文版本,ARM CPU。
[解决办法]