当前位置: 代码迷 >> WinCE >> 调用MultiByteToWideChar遇到的有关问题
  详细解决方案

调用MultiByteToWideChar遇到的有关问题

热度:240   发布时间:2016-04-28 13:48:20.0
调用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
------解决方案--------------------
C/C++ code
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。
------解决方案--------------------
探讨

查了半天,发现都是汉字转换有问题,奇怪,这边怎么是assic转换有问题的?是不是理解或者抄的网上的代码有问题?

------解决方案--------------------
应该是有关系的,把英文相关的locale都加到系统中吧
------解决方案--------------------
探讨

应该是有关系的,把英文相关的locale都加到系统中吧

------解决方案--------------------
回帖之后挣分下载东西
------解决方案--------------------
ar 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, s
------解决方案--------------------
请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作
------解决方案--------------------
学习。
------解决方案--------------------
这个函数是没问题的,
------解决方案--------------------
  相关解决方案