定義
char是8位
字元類型,最多只能包含256種字元,許多外文
字元集所含的字元數目超過256個,char型無法表示。
wchar_t數據類型一般為16位或32位,但不同的C或C++庫有不同的規定,如GNU Libc規定wchar_t為32位,總之,wchar_t所能表示的字元數遠超char型。
標準C中的wprintf()函式以及標準C++的iostream類庫中的
類和對象能提供wchar_t
寬字元類型的相關操作。
例如
#include <iostream>#include <locale>#include <cstdlib>using namespace std;locale loc("chs");//windows下ok//這段貌似在ubuntu下ok//locale loc("zh_CN.UTF-8");//而且還需要在ubuntu的終端中執行://sudo locale-genint main(){wchar_t wStr[]=L"這是一段中文";wcout.imbue(loc);wcout<<wStr<<endl;getchar();getchar();return 0;}
將char*轉換成wchar_t
可以用TEXT()方法將char轉換成wchar_t
例如: wchar_t appName[5]=TEXT("test");
方法2:
wchar_t* c2w(const char *str){ int length = strlen(str)+1; wchar_t *t = (wchar_t*)malloc(sizeof(wchar_t)*length); memset(t,0,length*sizeof(wchar_t)); MultiByteToWideChar(CP_ACP,0,str,strlen(str),t,length); return t;}