可以通过前缀字符串文字与写在C++ 11 UTF-8/16/32字符串文字u8/ u/ U分别.编译器如何解释这些新类型的字符串文字中包含非ASCII字符的UTF-8文件?我理解标准没有指定文件编码,而这个事实本身就会使源代码中非ASCII字符的解释完全未定义的行为,使得这个特性有点不太有用.
我知道你仍然可以逃脱单个unicode字符\uNNNN,但这对于完整的俄语或法语句子来说并不是很易读,因为它通常包含多个unicode字符.
我从各种来源理解的是,它u应该等同L于当前的Windows实现和ULinux实现.因此,考虑到这一点,我也想知道旧字符串文字修饰符所需的行为是什么......
对于代码示例猴子:
string utf8string a = u8"L'hôtel de ville doit être là-bas. Ça c'est un fait!";
string utf16string b = u"L'hôtel de ville doit être là-bas. Ça c'est un fait!";
string utf32string c = U"L'hôtel de ville doit être là-bas. Ça c'est un fait!";
Run Code Online (Sandbox Code Playgroud)
在理想的世界中,所有这些字符串都产生相同的内容(如:转换后的字符),但我使用C++的经验告诉我,这绝对是实现定义的,并且可能只有第一个才能做我想要的.