2013-08-05 54 views
4

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

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

我在Pre C++ 11代码中看到使用短的宏如L("string")"string"L"string"之间进行选择,但是我个人觉得这很丑陋。

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

+4

是的,你需要一个宏,因为你需要制作令牌。我个人认为宏观本身并不丑陋,但它的需求是。 –

+1

它不是关于字符串文字编码,而是大部分关于默认情况下应用程序将使用哪种字符串类型。是的,你没有其他选项'使用宏(至少在编译时)“ – zaufi

+0

它也是关于编码,默认情况下''”'是一个实现定义的单字节编码而不是UTF-8,两者都使用'char'类型 – DrYap

回答

0

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