我最近试图全面了解创建支持unicode的独立于平台的C++应用程序所需的步骤.这是混淆给我的是,大多数的HOWTO和东西平衡的字符编码(即ANSI或Unicode)和字符类型(char或wchar_t的).正如我到目前为止所了解的那样,这些是不同的东西,可能存在一个用Unicode编码的字符序列,但用std :: string表示,以及用ANSI编码的字符序列,但表示为std :: wstring,对吗?
因此,我想到的问题是C++标准是否对字符串文字的编码提供任何保证,L或者它是否只是说具有特定于实现的字符编码的类型为wchar_t?
如果没有这样的保证,这是否意味着我需要某种外部资源系统以独立于平台的方式为我的应用程序提供非ASCII字符串文字?这是什么首选方式?资源系统或源文件的正确编码加上适当的编译器选项?
回应中的讨论
如何以跨平台友好的方式处理C/C++中的Unicode字符串?
我正在尝试将UTF-8字符串分配给环境中的std::string变量Visual Studio 2010
std::string msg = "?????";
但是,当我查看字符串视图调试器时,我只看到"?????" 我将文件保存为Unicode(带签名的UTF-8),我使用字符集"使用unicode字符集"
"महसुस"是一种尼泊尔语言,它包含5个字符,占用15个字节.但是visual studio调试器将msg大小显示为5
我的问题是:
如何使用std :: string只存储utf-8而不需要操作它?