【发布时间】:2013-08-05 12:13:22
【问题描述】:
C++11 为 UTF-8、16 和 32 引入了带有 u8、u 和 U 前缀的新字符串文字,但我必须硬编码我想使用哪一个。我正在寻找一种方法来选择我想在编译时使用的编码(类似于 typedef 的工作方式)。
用户定义的字符串文字似乎没有帮助,因为它们适用于指定编码的字符串。
我曾在 C++11 之前的代码中看到使用短宏(例如 L("string"))在 "string" 和 L"string" 之间进行选择,但我个人觉得这很丑。
是否可以巧妙地选择默认类型和编码,还是必须使用宏选项?
【问题讨论】:
-
是的,您需要一个宏,因为您需要制作令牌。我个人认为宏本身并不难看,但需要它。
-
这与字符串文字编码无关,而主要与您的应用程序默认使用的字符串类型有关。是的,除了使用宏(至少在编译时)之外,您没有其他选择
-
这也是关于编码的,默认情况下
""是一个实现定义的单字节编码而不是UTF-8,两者都使用char类型
标签: c++ c++11 unicode character-encoding string-literals