在几个来源中已经提到,C++0x 将包括对 Unicode 更好的语言级支持(包括类型和文字)。
如果该语言要添加这些新功能,那么很自然地假设标准库也会添加这些新功能。 但是,我目前无法找到对新标准库的任何引用。我希望找到这些答案的答案:
- 新库是否提供将 UTF-8 转换为 UTF-16 等的标准方法?
- 新库是否允许将 UTF-8 写入文件、控制台(或从文件、控制台)。如果是这样,我们可以使用 cout 还是需要其他东西?
- 新库是否包含“基本”功能,例如:发现 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::toupper
和 std::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/