我最近尝试了解创建跨平台支持Unicode的C++应用程序所需的步骤。让我感到困惑的是,大多数教程都把字符编码(即ANSI或Unicode)和字符类型(char或wchar_t)等同起来。据我所知,这些是不同的东西,可能存在一种由Unicode编码但由std::string表示的字符序列,以及一种由ANSI编码但由std::wstring表示的字符序列,对吗?
那么,我想知道的问题是,C++标准是否保证以L
开头的字符串文字的编码?还是只说它是wchar_t类型,并具有实现特定的字符编码?
如果没有这样的保证,这是否意味着我需要某种外部资源系统以平台无关的方式提供非ASCII字符串文字给我的应用程序?哪种方法更好?资源系统还是正确编码源文件加上适当的编译器选项?