C++里面,什么时候使用std::wstring

看你要使用什么字符编码了, std::wstring主要用于 UTF-16编码的字符,而std::string主要用于存储单字节的字符( ASCII字符集 ),但是也可以用来保存UTF-8编码的字符。(UTF-8和UTF-16是UNICODE字符集的两种不同的字符编码)

如果你的程序支持多种语言,那么使用UTF-16来处理字符会方便一些,因为该编码中的每个字符都占用2个字节;而UTF-8中的字符所占的字节可能是1个字节或者多个字节(范围是1 ~ 6 个字节),多字节的字符编码对于处理字符不方便,而且std::string也没有提供对UTF-8的支持。

例:

下面的代码中定义了两个字符串对象,都包含了5个字符:

由于std::string对UTF-8支持不完善所以输出的结果并不正确:

上面的程序要输出正确的结果需要使用特殊的UTF-8字符编码API来实现,所以对于UNICODE字符使用std::string来实现字符操作比较麻烦。

再者有的库或者API只支持UTF-16编码的字符,而且有的API使用UTF-16编码的字符时执行速度会快一些(因为你如果使用UTF-8,它内部需要将UTF-8转换成UTF-16,所以速度有慢了一点)。

猜你喜欢

转载自blog.csdn.net/qq_28388835/article/details/81172675