-
wchar_t
鎖定
- 中文名
- 寬字符
- 外文名
- wchar_t
- 類 別
- 一種擴展的存儲方式
- 概 念
- 16位字符類型
wchar_t定義
char是8位字符類型,最多隻能包含256種字符,許多外文字符集所含的字符數目超過256個,char型無法表示。
wchar_t數據類型一般為16位或32位,但不同的C或C++庫有不同的規定,如GNU Libc規定wchar_t為32位,總之,wchar_t所能表示的字符數遠超char型。
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-gen int 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");
//注: //TEXT()在winnt.h中的定義如下: #define TEXT(quote) __TEXT(quote) #ifdef UNICODE #define __TEXT(quote) L##quote #else #define __TEXT(quote) quote #endif //所以如果未定義宏UNICODE,TEXT()是沒有效果的
方法2:
#include <windows.h> //聲明MultiByteToWideChar 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; }