标题只是一个例子。
完整的问题是这样的:一个二进制流包含各种字符,有常规的各种字母、数字,还有汉字等,还有一些诸如'\xae','\xaf'之类的字符。想把它转换为宽字符串(wchar_t[])。如何在转换时能正确区别多字节的字符(如汉字)和象'\xae'、'\xaf'这样的单字节字符。
例如:
"ABC我\xaf\axe"在转换后应是6个字符而不是5个。我用MultiByteToWideChar转换不行:
MultiByteToWideChar(CP_ACP,0,...);该如何做?
完整的问题是这样的:一个二进制流包含各种字符,有常规的各种字母、数字,还有汉字等,还有一些诸如'\xae','\xaf'之类的字符。想把它转换为宽字符串(wchar_t[])。如何在转换时能正确区别多字节的字符(如汉字)和象'\xae'、'\xaf'这样的单字节字符。
例如:
"ABC我\xaf\axe"在转换后应是6个字符而不是5个。我用MultiByteToWideChar转换不行:
MultiByteToWideChar(CP_ACP,0,...);该如何做?
解决方案 »
- 对ComboBox的GetWindowText的问题!
- PostMessage向其他程序发送组合键问题
- 小弟求救 怎样将一个已经存在的文件复制到另一个文件夹
- 安装VC 6.0时 注册MSADDNDR.dll失败
- 用_T和没有有什么分别啊??
- 分
- COM技术中的containment和delegation是什么意思?
- 请教如何挂接IE弹出页面事件
- :: 怎样设置 CDialogBar 对话框条 的颜色???(快回答快给分)
- 用CreateThread创建一个线程后如果不CloseHandle,会发生什么事情?
- 关于edit框处理数据显示的问题,问了很多次!!还是有些问题,高手帮忙!急急!!!
- !!!封装EDIT类响应enter键,急救!!(保证信誉)
{
char* ptr=(char*)lpWCharStr;
int nCurLen=0;
while(*szBuf++)
{
if(nCurLen>nLen-1)
return FALSE;
if(*szBuf<80)
{
*ptr++=0x00;
*ptr++=*szBuf++;
}
else
{
*ptr++=*szBuf++;
*ptr++=*szBuf++;
}
nCurLen++;
}
*ptr++=0x00;
*ptr=0x00;
return TRUE;
}void main()
{
char* str="ABC我\xaf\axe";
WCHAR wStr[100];
if(LetMeHelp(str,wStr,100))
printf("I am OK.\n");
else
printf("I do not know why.\n");
}(以上代码未经测试,使用者后果自负,作者保留所有版权)