在几个来源中已经提到C ++ 0x将包括对Unicode的更好的语言级支持(包括类型和文字)。
如果语言要添加这些新功能,那么很自然地会假设标准库也是如此。 但是,我目前无法找到任何对新标准库的引用。我希望找到这些答案的答案:
最后,这些功能是否可用于任何流行的编译器,如GCC或Visual Studio?
我试图寻找信息,但我似乎找不到任何东西。我实际上开始认为这些事情可能还没有决定(我知道C ++ 0x正在进行中)。
答案 0 :(得分: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::toupper
和std::towupper
的功能与之前版本的标准相同。没有任何专门针对unicode操作的新功能。
如果您需要这些东西,您仍然需要依赖外部库 - <iostream>
是改装的主要部分。
在新标准中为unicode添加了什么,具体?
std::char_traits
个类
来自ISO / IEC TR 19769:2004的mbrtoc16
,c16rtomb
,mbrtoc32
和c32rtomb
std::codecvt
方面的区域设置库std::wstring_convert
类模板(使用codecvt
机制进行代码集转换)std::wbuffer_convert
,除了原始数组外,与wstring_convert
相同,不是字符串。