2013-08-05 47 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做一定的選擇,但它決不是一個便攜式解決方案。