首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

调用MultiByteToWideChar遇到的有关问题

2012-02-02 
调用MultiByteToWideChar遇到的问题char tempstr[20]TCHAR IP[20]memset(tempstr,0,sizeof tempstr)str

调用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)”。如是商业用途请联系原作
[解决办法]
学习。
[解决办法]
这个函数是没问题的,
------解决方案--------------------


学习……………………
[解决办法]
给力,顶一个
[解决办法]
谢谢楼主分享。。。。
[解决办法]
很厉害,不错!
[解决办法]
xuexi
[解决办法]

从配置文件中取过来的字符串如果中间含有中文的,执行没有问题,但只有assic的时候,居然崩溃了,搞了一天没有解决,哪位大哥看一下

何为“assic”,是“ASCII”吗?
调用api函数崩溃,基本意味着内存访问违规,可以尝试从这个方面考虑
[解决办法]
字符串转换崩溃一般是内存溢出问题,可以参考下面的做法:

//WideCharToMultiByte
CStringm_strSend;
char buf[512];
memset(buf, 0, 512);
WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, m_strSend, -1, buf, sizeof(buf)/sizeof(char), NULL, NULL );

//MultiByteToWideChar
char buf[1024];
wchar_t wbuf[1024];
memset(buf, 0, 1024);
memset(wbuf, 0, 1024);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, buf, 1024, wbuf, 1024);
[解决办法]
从配置文件中取过来的字符串如果中间含有中文的,执行没有问题,但只有assic的时候,居然崩溃了,搞了一天没有解决,哪位大哥看一下

何为“assic”,是“ASCII”吗?
调用api函数崩溃,基本意味着内存访问违规,可以尝试从这个方面考虑

热点排行