我已经阅读并听说 C++11 支持 Unicode。对此有几个问题:
std::string
应该做什么? 最佳答案
您可以安全地将 UTF-8 存储在 std::string
中。 (或在 char[]
或 char*
中),因为 Unicode NUL (U+0000) 是 UTF-8 中的空字节,这是空字节出现的唯一方式在 UTF-8 中。因此,您的 UTF-8 字符串将根据所有 C 和 C++ 字符串函数正确终止,并且您可以使用 C++ iostream(包括 std::cout
和 std::cerr
,只要您的语言环境是 UTF-8 )。std::string
不能做什么对于 UTF-8 是获取代码点的长度。 std::string::size()
将告诉您字符串长度(以字节为单位),当您在 UTF-8 的 ASCII 子集中时,它仅等于代码点的数量。
如果您需要在 code point 处对 UTF-8 字符串进行操作级别(即不仅仅是存储和打印它们)或者如果您正在处理可能有许多内部空字节的 UTF-16,您需要查看宽字符串类型。
关于c++ - C++11 对 Unicode 的支持程度如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103925/