hur.cn - 华软网

 热门搜索

Unicode 转 Multi

  作者:未知    来源:网络    更新时间:2011/5/31
我想把下面的Unicode 转换成Multi 弄了好久也不成功 请哪位朋友指教一下谢谢了
Unicode
C++">WCHAR *ImgInfoBuf, TempString[100];
DWORD ImgInfoBufSize;
WIMGetImageInformation(hImg, (LPVOID *)&ImgInfoBuf, &ImgInfoBufSize);
wsprintf(TempString, TEXT("<IMAGE INDEX=\"%d\">"), imgNum); 
WCHAR *StringPointer = wcsstr(ImgInfoBuf, TempString);  
WCHAR *SecondString = wcsstr(++StringPointer, TEXT("<")); 
SecondString[-1] = 0; //end the first string  


Multi
C++">//Get the info and divide it into two strings
WCHAR *ImgInfoBuf, TempString[100];
DWORD ImgInfoBufSize;
WIMGetImageInformation(hImg, (LPVOID *)&ImgInfoBuf, &ImgInfoBufSize);
wsprintf(TempString, TEXT("<IMAGE INDEX=\"%d\">"), imgNum); 
const unsigned char  *StringPointer = _mbsstr((const unsigned char *)ImgInfoBuf, (const unsigned char *)TempString);  
const unsigned char  *SecondString = _mbsstr(++StringPointer, (const unsigned char *)("<")); 
SecondString[-1] = 0; //end the first string  报错

---华软 网友回答---
C++">
//**************************************
// unicode字符串转ansi字符串
// 返回大于0成功,小于0失败
//**************************************
int
ustr_astr( WCHAR *unicodestr, char *ansistr )
{
int result = 0;
try
{
int needlen = WideCharToMultiByte( CP_ACP, 0, unicodestr, -1, NULL, 0, NULL, NULL );
if( needlen < 0 )
{
return needlen;
}

result = WideCharToMultiByte( CP_ACP, 0, unicodestr, -1, ansistr, needlen + 1, NULL, NULL );
if( result < 0 )
{
return result;
}
return ( result - 1 );
}
catch( ... )
{
ShowError();
}
return result;
}

---华软网友回复---
用CT2A、CW2A类,很简单。
---华软网友回复---
支持1楼,反过来用MultiByteToWideChar
---华软网友回复---
引用 1 楼 jennyvenus 的回复:
C/C++ code

//**************************************
// unicode字符串转ansi字符串
// 返回大于0成功,小于0失败
//**************************************
int
ustr_astr( WCHAR *unicodestr, char *ansistr )
{
    int resul……

这个就行了。楼主没必要写两遍代码
---华软网友回复---
用这个接口吧WideCharToMultiByte().....
---华软网友回复---
引用 1 楼 jennyvenus 的回复:
C/C++ code

//**************************************
// unicode字符串转ansi字符串
// 返回大于0成功,小于0失败
//**************************************
int
ustr_astr( WCHAR *unicodestr, char *ansistr )
{
    in……


仁兄对头的
---华软网友回复---
我后来 直接把 wsprintf换成 wsprintfW
TEXT都换成 L 问题就解决了
谢谢大家了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。