读书人

关于WCHAR转化为char的有关问题

发布时间: 2012-02-14 19:19:19 作者: rapoo

关于WCHAR转化为char的问题
#include "stdafx.h"
#include <atlbase.h>
char* WSTRToAnsi(WCHAR* Msg)//把wchar*转换称char*
{
int len = wcstombs(NULL, Msg, 0);
char* buf = new char[len+1];
wcstombs(buf, Msg, len);
buf[len] = 0;
return buf;
}
int main(int argc, char* argv[])
{
WCHAR* d=L"速度";//此处如果是英文,可以成功,如果是汉字,则失败
char* s =WSTRToAnsi(d);
printf("%s\n",s);//?
return 0;
}

[解决办法]
WCHAR* d=L "速度 ";
——对于这句话的处理,不同的编译器可能会不一样。
大部分编译器中,如果你的源文件不是Unicode格式的,那么d所指向的字符串并不会被自动转换成Unicode格式。
[解决办法]

C/C++ code
//#include   "stdafx.h " #include   "tchar.h"//#include <iostream.h>#include <LOCALE.h>#include   <atlbase.h> //using namespace std;char*   WSTRToAnsi(WCHAR*   Msg)//把wchar*转换称char* {     int   len   =   wcstombs(NULL,   Msg,   0);     char*   buf   =   new   char[len+1];     wcstombs(buf,   Msg,   len);     buf[len]   =   0;     return   buf; } int   main() {     WCHAR*   d=L"速度";//此处如果是英文,可以成功,如果是汉字,则失败     //    cout.imbue(locale("chs"));///这样写可以    setlocale(LC_ALL,"chs");///////////////////////本地化    char*   s   =WSTRToAnsi(d);     printf( "%s\n ",s);//?         return   0; }
[解决办法]

要保源文件是 Unicode 的——不是每一器都支持的。

读书人网 >C++

热点推荐