支持C ++ 11中可选的通用字符名称?

时间:2011-04-16 12:49:30

标签: c++ unicode c++11

在筛选新的C ++ 11规范时,我找不到任何说明对通用字符名称的支持是实现定义的,如devx提到的那样。我找不到对此实现定义行为的任​​何引用。只有2.14.3。(5)说明了可执行文件中要写的内容,但我看不到任何其他内容。

我是否正确地假设符合标准的C ++ 11编译器因此 支持\unnnn\Unnnnnnnn

2 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但文字说明符uU仅用于指定整数数据类型 - 没有说明什么构成字符(或更不用说推测哪种编码了)。总结一下:

char a1 = 'a', b1[] = "Hello";
wchar_t a2 = L'a', b2[] = L"Hello";
char16_t a3 = u'\u1234', b3[] = u"Hello \uABCD";
char32_t a4 = U'\U5678ABCD', b4[] = U"Hello \U10325476"; // not actually valid codepoints

你最终用这些类型的完全取决于你。文字说明符LuU只允许您在代码中放置文字常量,并且它们已经存在了一段时间(尽管我认为u"..." U"..."字符串语法只在C ++ 0x中是正式的,char16_tchar32_t类型也是正式的,它们是真正的新类型,而不仅仅是别名。)

答案 1 :(得分:0)

我的理解是C ++ 98已经是这样了。只是在这一点上符合要求的编译器很少见。