1。
字符基础 -- ASCII, DBCS, Unicode
首先,我们强调一下几个概念
c-style字符串 : 字符串的长度要通过寻找结束符来计算。例如,SBCS和MBCS都是以单个字节的0字符作为结束符。UNICODE则以双字节的0字符作为结束符。
pascal-style字符串 : 字符串长度被明确指出。
编码模式有3种 :
单子节字符集(SBCS),所有字符都使用一个字节表示。
多字节字符集(MBCS) , 一个MBCS编码包含一些一个字节长的字符,而另一些字符大于一个字节的长度。
Unicode, 是一种所有的字符都使用两个字节编码的编码模式。
由于编码模式有3种,所以微软对字符串或字符的处理也相应分别有3种函数。明确要处理的字符串的编码模式而采用相应的处理函数是非常重要的。
2。
字符串的各种封装类
因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标,所以出现了很多字符串封装类。不幸的是,在某些场合下我们不知道该使用哪个字符串类,也不知道怎样把一个C风格的字符串转换成一个字符串封装类。
CRT提供的类 , _bstr_t , _variant_t
STL 类 , basic_string
ATL 类 ,CComBSTR , CComVariant
MFC类 , CString , COleVariant
WTL 类 , CString