多位元組字元(multibyte character):每個字元可以是一到多個位元組不等,而某個位元組序列的字元值由字串或流(stream)所在的環境背景決定。
寬字元:對寬字元的支援其實是ansi c標準的一部分,用以支援多位元組表示乙個字元。寬字元和unicode並不完全等同,unicode只是寬字元的一種編碼方式。在ansi中,乙個字元(char)的長度為乙個位元組(byte)。使用unicode時,乙個字元佔據乙個字,c++在wchar.h標頭檔案中定義了最基本的寬字元型別wchar_t :typedef unsigned short wchar_t;
寬字元的使用 :wchar_t *str1=l" 你好hello"; 這個l非常重要,只有帶上它,編譯器才知道你要將字串存成乙個字元乙個字。還要注意,在l和字串之間不能有空格。
以下提供了了乙個寬字元和多位元組字元相互轉化類:
class stringunicode
; static wstring tounicode(const string& str)
;};
標準 c++庫中提供的一組多位元組字元和寬字元相互轉化的api(繼承自c庫):
mbtowc
convert multibyte character to wide character (function)
wctomb
convert wide character to multibyte character (function)
mbstowcs
convert multibyte string to wide-character string (function)
wcstombs
convert wide-character string to multibyte string (function)
C 多位元組字元與寬位元組字元相互轉換
pragma once class strtransfer 字元型別 wchar t char 獲取字元長度 wcslen strlen 連線兩個字串 wcscat strcpy 複製字串 wcscpy strcpy 比較兩個字串 wcscmp strcmp 具體引數詳見www.linuxidc.c...
VC 多位元組寬字元相互轉換
多位元組寬字元相互轉換用的較多,自己寫了一點留作以後參考。string str cout please input chinese str setlocale lc ctype,chs const char cstr1 str.c str int len 2 sizeof cstr int wlen...
unicode字元和多位元組字元的相互轉換介面
發現開源 的可利用資源真多,從sqlite3的原始碼中摳出了幾個字元轉換介面,稍微改造下了發現還挺好用的。下面是實現 convert a utf 8 string to microsoft unicode utf 16?space to hold the returned string is obt...