在筛选新的C ++ 11规范时,我找不到任何说明对通用字符名称的支持是实现定义的,如devx提到的那样。我找不到对此实现定义行为的任何引用。只有2.14.3。(5)说明了可执行文件中要写的内容,但我看不到任何其他内容。
我是否正确地假设符合标准的C ++ 11编译器因此 支持\unnnn
和\Unnnnnnnn
?
答案 0 :(得分:1)
我不确定我是否完全理解您的问题,但文字说明符u
和U
仅用于指定整数数据类型 - 没有说明什么构成字符(或更不用说推测哪种编码了)。总结一下:
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
你最终用这些类型做的完全取决于你。文字说明符L
,u
和U
只允许您在代码中放置文字常量,并且它们已经存在了一段时间(尽管我认为u"..."
U"..."
字符串语法只在C ++ 0x中是正式的,char16_t
和char32_t
类型也是正式的,它们是真正的新类型,而不仅仅是别名。)
答案 1 :(得分:0)
我的理解是C ++ 98已经是这样了。只是在这一点上符合要求的编译器很少见。