Win32中的字串

來源:互聯網
上載者:User
W版本和A版本的Win32API

A:ANSI字元集;  W:wide Unicode字元集。windows支援Unicode和ANSI編碼的字元。

在User32.dll中匯出的函數實際上沒有MessageBox,只有MessageBoxA和MessageBoxW,這兩者是同一個API,實現了同樣的功能。不同的是,MessageBoxA以多位元組字串作為參數輸入,MessateBoxW以Unicode字串作為參數輸入。但如果在編寫程式時,使用的字元集與代碼中使用的函數不一致、定義的字串變數不相容,將會引起編譯錯誤或者運行程式顯示亂碼,甚至可能引起程式運行錯誤,這一點需要引起注意。

Unicode字元集和多位元組字元集

多位元組字元集:MBCS(Multi-Byte Character System),即熟知的ANSI字元集。使用單位元組方式編。ANSI字元集,它的正式名稱應該是MBCS(Multi-Byte Chactacter System,即多位元組字元系統)。

Unicode(wideCharacter-set):寬位元組字元集(統一碼,萬國碼)使用雙位元組編碼,utf-8是其子。

Windows既可以使用Unicode字元集又可以使用傳統的字元集(如多位元組編碼)來實現對多種語言的支援,以適應國際市場的要求。與傳統的字元集編碼相比,Unicode是世界通用的字元編碼標準,使用16位元據表示一個字元,一共可以表示65535種字元。傳統的字元集,如Windows ASNI字元集,使用8位元據或將相鄰的兩個8位的資料群組合在一起表示特殊的語言字元。當人們在看網頁或文檔時,有時出現亂碼,通常他使用了ANSI字元集,應改為Unicode統一碼字元集,畢竟他是世界通用的。

  • ANSI 操作函數以str開頭 strcpy
  • Unicode 操作函數以wcs開頭 wcscpy
  • MBCS 操作函數以_mbs開頭 _mbscpy
Win32中的字串

在C,C++語言中沒有字串這種資料類型,表示字串通常使用字元指標或字元數組。

ANSI

Unicode

ANSI/Unicode根據環境來確定

字元

CHAR

char

WCHAR

wchar_t

TCHAR

字串

LPSTR

char*

LPWSTR

wchar_t*

LPTSTR

常量字串

LPCSTR

LPCWSTR

LPCTSTR

字串初始化

"string"

L"string"

TEXT("string")

修改字元集:項目屬性->常規->字元集:使用Unicode的字元集、使用多位元組字元集。

一般,建立工程預設的字元集都是Unicode的(但建立的空項目預設為ANSI)。為此,我們在定義字串時,應該常用LPTSTR類型,及TEXT宏,_T宏與TEXT宏相同,不過要添加tchar.h標頭檔。

  • 對於MBCS字串串連,複製,比較,求長運算為:strcat,strcpy,strcmp,strlen
  • 對於Unicode字串串連,複製,比較,求長運算為:wcscat,wcscpy,wcscmp,wcslen;wcs(wide character-set)寬位元組字元集
  • 根據開發環境的設定來自動適應:_tcscat,_tcscpy,_tcscmp,_tcslen
它們之間的相互轉換

LPWSTR->LPTSTR:   W2T();
LPTSTR->LPWSTR:   T2W();
LPCWSTR->LPCSTR: W2CT();
LPCSTR->LPCWSTR: T2CW();

ANSI->UNICODE: A2W();

UNICODE->ANSI: W2A();

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.