在编译时选择C ++字符串文字的默认类型和编码

时间:2013-08-05 12:13:22

标签: c++ c++11 unicode character-encoding string-literals

C ++ 11为UTF-8,16和32引入了带有u8uU前缀的新字符串文字,但我必须硬编码我想要哪一个使用。我正在寻找一种方法来选择我想在编译时使用哪种编码(类似于typedef的工作方式)。

用户定义的字符串文字似乎没有帮助,因为它们处理指定编码的字符串。

我在前C ++ 11代码中看到使用L("string")之类的短宏来在"string"L"string"之间进行选择,但我个人觉得这很难看。

是否可以巧妙地选择默认类型和编码,还是必须使用宏选项?

1 个答案:

答案 0 :(得分:0)

不幸的是,这个问题的解决方案是使用宏。虽然@Nadim Farhat指出你可以用gcc做一定数量的选择但它绝不是一个可移植的解决方案。