我读过并听说C++ 11支持Unicode.关于这一点的一些问题:
std::string做自己应该?我想创建一些处理编码的示例程序,特别是我想使用宽字符串,如:
wstring a=L"grüßen";
wstring b=L"???? ????!";
wstring c=L"??";
Run Code Online (Sandbox Code Playgroud)
因为这些是示例程序.
对于将源代码视为UTF-8编码文本的gcc,这绝对是微不足道的.但是,简单的编译在MSVC下不起作用.我知道我可以使用转义序列对它们进行编码,但我更愿意将它们保存为可读文本.
是否有任何选项可以指定为"cl"的命令行开关以使其工作?那里有任何命令行开关,如gcc'c-finput-charset
谢谢,
如果不是,你会如何建议让文字对用户自然?
注意:将BOM添加到UTF-8文件不是一种选择,因为它变得不可由其他编译器编译.
注意2:我需要它在MSVC版本> = 9 == VS 2008中工作
真正的答案:没有解决方案
标准定义
基本源字符集
基本执行字符集及其广泛的char对应物
它还定义了"执行字符集"及其宽字符对应项,如下所示
$ 2.2/3-"执行字符集和执行宽字符集分别是基本执行字符集和基本执行宽字符集的超集.执行字符集成员的值是实现定义的,并且任何其他成员都是特定于语言环境的."
Q1.我不认为我完全理解这一点,特别是最后的陈述.有关这方面的任何指示?
进一步,
$ 3.9.1 - "声明为字符(char)的对象应足够大,以存储实现的基本字符集的任何成员."
Q2.在3.9.1中,短语"基本字符集"表示"基本执行字符集"?