ANSI,MBCS,UNICODE


编程的书中经常介绍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个字节。;

你可能感兴趣的:(ANSI,MBCS,UNICODE)