wchar_t

wchar_t

wchar_t是C/C++的字元類型,是一種擴展的存儲方式。wchar_t類型主要用在國際化程式的實現中,但它不等同於uni編碼。uni編碼的字元一般以wchar_t類型存儲。

基本介紹

  • 中文名:寬字元
  • 外文名:wchar_t
  • 屬於:C/C++的字元類型
  • 類別:一種擴展的存儲方式
  • 概念:16位字元類型
定義,例如,

定義

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;}

相關詞條

熱門詞條

聯絡我們