c++ - "UTF-16"和 "std::wstring"有什么区别?

标签 c++ unicode stl utf-16

这两种字符串存储格式有什么区别吗?

最佳答案

std::wstringwchar_t 的容器。 wchar_t 的大小未指定 — Windows 编译器倾向于使用 16 位类型,Unix 编译器倾向于使用 32 位类型。

UTF-16是一种在 16 位整数序列中编码 Unicode 代码点序列的方法。

使用 Visual Studio,如果您使用不包含 BMP 之外的字符的宽字 rune 字(例如 L"Hello World") ,你最终会得到 UTF-16,但大多数情况下这两个概念是不相关的。如果您使用 BMP 之外的字符,std::wstring 将不会翻译 surrogate pairs为您转换为 Unicode 代码点,即使 wchar_t 是 16 位。

关于c++ - "UTF-16"和 "std::wstring"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247236/

相关文章:

delphi - 从 Delphi 2007 迁移时的 CharInSet 批量转换

c++ - 在多字节字符集应用程序中的 MFC 窗体控件上设置 Unicode 文本

c++ - std::set.find() 返回的迭代器存在多长时间?

Javascript 最快的本地数据库

c++ - 组合谓词

c++ - 通过调用 transform 方法对齐持有不同类型的两个容器

c++ - 对于 wcin 中包含的相同数量的无效字符,将重复 Failcheck 消息

c++ - 想要在 QThread 中更新 QtableWidget

c++ - 在 C/C++ 预处理器中获取宏参数的不同部分

c++ - 为什么控制台在我包含 cin.get() 后关闭?