【发布时间】:2017-07-08 17:56:00
【问题描述】:
我正在使用代码块来编写 C++ 程序。我想在 std::wstring 类型中添加一个希伯来语字符串,但它不起作用。
如果我这样写:
std::wstring str2("שלום");
并编译,它给了我这个错误:
error: no matching function for call to 'std::basic_string<wchar_t>::basic_string(const char [5])'|
如果我在字符串文字前使用“L”,即
std::wstring str2(L"שלום");
然后它给出了错误:
error: converting to execution character set: Invalid argument|
【问题讨论】:
-
如果你用L表示它是一个wchat_t,你是否包含了
? -
不要在程序源代码中使用非 ascii 字符串,它不可移植、依赖于实现并且无论如何都是不好的做法。说了这么多,你的源文件用的是什么编码?
-
我不知道我使用什么编码,我使用代码块和编译器 GNU GCC
-
与这些字符对应的 unicode 中的 16 位值是什么?您在使用时对
wchar_t字符串的运行时编码是什么? (我希望是 unicode!Utf-32?Utf-16?Ucs-2?)您可以将转义序列放入L""字符串并让它工作。
标签: c++ character-encoding hebrew string-literals wstring