我正在用ccc编写一个用c ++编写的程序。我有一个utf8编码的源文件,我希望源文件中的字符串文字为UTF-16字符串。我使用gcc选项-municode,它定义了UNICODE宏。字符串文字仍然实现为const char *。当我使用TEXT(“hello world”)时,它仍然是一个const char *
另外,我想知道要定义哪个宏,或者使用哪个命令行选项,在std :: string对象中有16位特征,以及std库的模板实例化(我想要std :: char_traits是wchar_t。
答案 0 :(得分:1)
从C ++ 11开始,有一些方法可以为字符串文字和字符串对象指定UTF-16。它为UTF-16字符引入char16_t
,为UTF-16字符串引入std::u16string
,为UTF-16字符引入u
prefix。
std::u16string str = u"Hello World";
编译器负责将源代码中的字符转换为适当的文字字符值。