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

lui*_*bal 19 c++ unicode utf-8 standard-library c++11

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

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

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

最后,这些功能是否可用于任何流行的编译器,如GCC或Visual Studio?

我试图寻找信息,但我似乎找不到任何东西.我实际上开始认为这些事情可能还没有决定(我知道C++ 0x正在进行中).

Bil*_*eal 13

新库是否提供将UTF-8转换为UTF-16等的标准方法?
不会.然而,新库确实提供std::codecvt了在处理iostream时为您进行转换的方面.ISO/IEC TR 19769:2004,C Unicode技术报告,几乎逐字逐句列入新标准.

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

新库是否包含"基本"功能,例如:发现UTF-8字符串的字节数和长度,转换为大写/小写(这是否考虑了区域设置的影响?)
AFAIK该功能存在于现有的C++ 03标准.std::toupperstd::towupper当然的功能就像在标准的早期版本.没有任何专门针对unicode操作的新功能.

如果你需要这些东西,你仍然需要依赖外部库 - <iostream>这是改装的主要部分.

什么,特别是,在增加了对Unicode的新标准?

  • Unicode文字,通过u8"",u""和U""
  • std::char_traits UTF-8,UTF-16和UTF-32的类
  • mbrtoc16,c16rtombmbrtoc32,以及c32rtombISO/IEC TR 19769:2004
  • std::codecvt 区域设置库的方面
  • std::wstring_convert类模板(它使用codecvt机构,用于代码集转换)
  • std::wbuffer_convert,它不相同,wstring_convert除了原始阵列,而不是字符串.