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

为什么不全部使用std::string?... 为什么不全部使用std::string? 展开
 我来答
帐号已注销
2015-07-07 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1270万
展开全部

看你要使用什么字符编码了, 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,所以速度有慢了一点)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式