2016-11-21 37 views
0

我正在使用gcc在C++中編寫程序。我有一個utf8編碼的源文件,我想從我的源文件的字符串文字作爲UTF-16字符串。我使用gcc選項-municode,它定義了UNICODE宏。字符串文字仍然以const char *的形式實現。當我使用TEXT(「你好世界」),它仍然是一個常量字符*C++編譯器如何從utf8源文件生成unicode字符串

此外,我想知道哪個宏定義,或使用哪個命令行選項,在std中具有16位特徵: :字符串對象和al std庫的模板實例(我希望std :: char_traits是wchar_t。

+0

宏不是必需的。更多這裏:http://en.cppreference.com/w/cpp/language/string_literal – user4581301

+0

我已經使用了不同種類的字符串litteral修飾符像U,u,r。它被編譯器 –

+0

忽略。什麼編譯器? – user4581301

回答

1

從C++ 11開始,可以爲字符串文字和字符串對象指定UTF-16它介紹了char16_t爲UTF-16字符,std::u16string爲UTF-16的字符串,和用於u prefix UTF-16文字。

std::u16string str = u"Hello World"; 

編譯器負責將源代碼中的字符轉換爲適當的文字字符值。