The difference among ANSI, MBCS with Unicode

來源:互聯網
上載者:User
編程的書中經常介紹UNICODE,還有字串函數中經常見各種格式,下面以以"abc我你他"為例分別介紹

測試源碼:

TCHAR* p = _T("abc我你他"); 
std::cout << _tcsclen(p);

我們寫的代碼應該是這個樣子的,即既符合ANSI又符合UNICODE的代碼,使用_T宏和_ts函數集。

一、ANSI編碼:普通英文字母一個,漢字佔兩個位元組。"abc我你他"佔用9個位元組。
 
 編譯選項裡沒有相關選項
 輸出9
 此時,_tcsclen為strlen,結果為位元組數。

 使用多字元函數,即MultiByte函數,編譯選項裡設定_MBCS, 該選項VC預設產生的工程裡有(Project->Setting->C++->Preprocessor Setting)。
 此時_tcsclen 為_mbslen。輸出結果為6,實際佔用9個位元組。

二、UNICODE編碼,所謂寬字元,英文字元和漢字都佔用2個位元組,編譯選項裡設定_UNICODE,UNICODE
 源碼相當於wchar_t* p = L"abc我你他";
  std::cout << wcslen(p);
 結果為6,實際佔用12個位元組。;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.