C++ C++;错误:转换为执行字符集
问题是,我试图打印ASCII以外的一些字符,如德语umlaut字符、“ß”等。这些字符不适合普通的char变量,所以很明显,我尝试将它们放入一个wchar\u t中,并用L“…”初始化字符串。但是每次这个字符串包含上面的一个字符时,我都会得到上面提到的错误,但是对于ASCII的所有其他字符都没有问题。这也会发生在u“…”,u“…”,如果我使用u8“…”,它不会生成错误,而是打印垃圾 关于这些问题:C++ C++;错误:转换为执行字符集,c++,c,string,C++,C,String,问题是,我试图打印ASCII以外的一些字符,如德语umlaut字符、“ß”等。这些字符不适合普通的char变量,所以很明显,我尝试将它们放入一个wchar\u t中,并用L“…”初始化字符串。但是每次这个字符串包含上面的一个字符时,我都会得到上面提到的错误,但是对于ASCII的所有其他字符都没有问题。这也会发生在u“…”,u“…”,如果我使用u8“…”,它不会生成错误,而是打印垃圾 关于这些问题: 如何打印此字符和ASCII集合之外的其他字符 这个错误到底是什么意思 我可以打印字符的唯一方法是调
#include <iostream>
#include <string>
using namespace std;
int main()
{
wstring x = L"öäüß" ;
wcout << x ;
return 0 ;
}
#包括
#包括
使用名称空间std;
int main()
{
wstring x=L“öäüß”;
wcout在编译最初在Visual Studio中编辑的多平台项目时,我也遇到了这个问题。VS使用不同的字符集(至少在我的例子中是CP1252),而GCC需要UTF-8。您可以使用-finput charset
g++标志指示源代码的编码。您可能需要创建一个示例来说明您的问题,并包括生成错误或实际和预期的输出。我包括了示例。
#include <iostream>
#include <string>
#include <locale>
using namespace std;
int main(void)
{
setlocale(LC_ALL,""); // sets locale to german on my computer
string x = "äöüß" ;
cout << x ;
return 0 ;
}