單字符集SBCS 多字符集 寬字符集

1.----->單字節字符集,稱之爲SBCS,它的所有字符都只有一個字節的長度。常見字符集有:ASCII碼和擴展ASCII碼。SBCS字符串由一個零字節結尾,數據類型是char。

2.------>多字節字符集(MBCS)

3.------->寬字符集(Unicode字符集)

const char * p = "Hello"; // 使用 ASCII 字符集 

const char * p = "你好";  // 使用 MBCS 字符集,由於 MBCS 完全兼容 ASCII,多數情況下,我們並不嚴格區分他們 

LPCSTR p = "Hello,你好";  // 意義同上 

 

const WCHAR * p = L"Hello,你好"; // 使用 UNICODE 字符集(L用來定義UNICODE字符串,L就是轉換成寬字符)

LPCOLESTR p = L"Hello,你好";     // 意義同上 

 

const TCHAR * p = _T("Hello,你好"); // 如果預定義了_UNICODE,則表示使用UNICODE字符集;如果定義了_MBCS,則表示使用 

LPCTSTR p = _T("Hello,你好");       // 意義同上 

      在上面的例子中,T是非常有意思的一個符號(TCHAR、LPCTSTR、LPTSTR、_T()、TEXT()、_TEXT()...),它表示使用一種中間類型,既不明確表示使用 MBCS,也不明確表示使用 UNICODE。那到底使用哪種字符集那?嘿嘿...編譯的時候決定吧。設置條件編譯的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改_MBCS、_UNICODE。爲了程序的可移植性,建議使用T類型!

CString::GetLength()獲得字節數的正確方法

CString str("abc我");

DWORD le0 = str.GetLength() * sizeof(TCHAR);

// 這種用法在MBCS環境下可以省略。在Unicode下,所有字符(包括ascii及中文字符), 每個字符都被定義爲WHAR, 即雙字節Unicode字符。該方法也正確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章