c++ - C++0x 中有哪些新的 Unicode 函数?

标签 c++ unicode c++11 standard-library utf-8

在几个来源中已经提到,C++0x 将包括对 Unicode 更好的语言级支持(包括类型和文字)。

如果该语言要添加这些新功能,那么很自然地假设标准库也会添加这些新功能。 但是,我目前无法找到对新标准库的任何引用。我希望找到这些答案的答案:

  1. 新库是否提供将 UTF-8 转换为 UTF-16 等的标准方法?
  2. 新库是否允许将 UTF-8 写入文件、控制台(或从文件、控制台)。如果是这样,我们可以使用 cout 还是需要其他东西?
  3. 新库是否包含“基本”功能,例如:发现 UTF-8 字符串的字节数和长度、转换为大写/小写(这是否考虑了语言环境的影响?)

最后,这些函数是否在任何流行的编译器(如 GCC 或 Visual Studio)中都可用?

我试图寻找信息,但我似乎找不到任何东西。我实际上开始认为,也许这些事情还没有决定(我知道 C++0x 是一项正在进行的工作)。

最佳答案

新库是否提供了将 UTF-8 转换为 UTF-16 等的标准方法?
不会。新图书馆确实提供了std::codecvt但是,在处理 iostream 时为您进行转换的方面。 ISO/IEC TR 19769:2004,C Unicode 技术报告,几乎逐字包含在新标准中。

新库是否允许将 UTF-8 写入文件、控制台(或从文件、控制台)。如果是这样,我们可以使用 cout 还是需要其他东西?
是的,您只需向 cout 灌输正确的 codecvt方面。但是请注意,控制台不需要正确显示这些字符

新库是否包含“基本”功能,例如:发现 UTF-8 字符串的字节数和长度,转换为大写/小写(这是否考虑了语言环境的影响?)
AFAIK 该功能存在于现有的 C++03 标准中。 std::toupperstd::towupper当然功能与标准的先前版本一样。没有任何专门针对 unicode 操作的新函数。

如果您需要这些东西,您仍将不得不依赖外部库——<iostream>是 retrofit 的主要部件。

具体来说,在新标准中为 unicode 添加了哪些内容?

  • Unicode 文字,通过 u8""、u""和 U""
  • std::char_traits UTF-8、UTF-16 和 UTF-32 的类
  • mbrtoc16 , c16rtomb , mbrtoc32 , 和 c32rtomb来自 ISO/IEC TR 19769:2004
  • std::codecvt语言环境库的方面
  • std::wstring_convert类模板(使用 codecvt 机制进行代码集转换)
  • std::wbuffer_convert , 与 wstring_convert 相同除了原始数组,而不是字符串。

关于c++ - C++0x 中有哪些新的 Unicode 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2853275/

相关文章:

c++ - 指针成员神秘地被删除?

Android:向不同运营商发送短信(@翻译成?)

python - Python 3 字符串排序是否取决于语言环境?

php - 规范化 (webdav) unicode 路径

c++ - 在 C++ 中使用枚举类值调用数组元素

c++ - 使用 yaml 有困难

c++ - 获取不带模板参数的对象类型

c++ - __has_trivial_copy 在 clang 和 gcc 中的行为不同。谁是对的?

c++ - 哪些 IDE 和文本编辑器可以推断在 C++11 中使用 auto 关键字声明的变量类型

c++ - 一些应用程序是如何用多种编程语言制作的?