我希望能够将从文件中读取的文本转换为多字节字符。 我在Windows上有以下适用于我的C ++代码。 当我尝试在Linux上编译代码时虽然失败了。
#include <locale>
....
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> utfconv;
std::string line;
while (std::getline(infile, line))
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> utfconv;
std::wstring widestr = utfconv.from_bytes(line);
这会引发以下错误:
wstring_convert is not a member of std
codecvt_utf8_utf16 is not a member of std
expected primary-expression before wchar_t
我正在使用GCC Red Hat 4.4.7-4。 根据我读到的内容,我导入了'locale',但它仍然无法找到它。
如果wstring_convert不可用,我能做些什么吗?
答案 0 :(得分:3)
很可能您的标准设置不正确。 std::wstring_convert
最初是在C ++ 11中引入的,在C ++ 17中已弃用,因此您需要添加编译器标记-std=c++11
或-std=c++14
。
编辑: 刚看到你正在使用的GCC版本。这已经过时了。如果你下载GCC 4.9.x或以上
,一切都应该可以正常工作答案 1 :(得分:0)
您必须使用较新的GCC版本。预编译版本是Developer Toolset的一部分(作为大多数Red Hat Enterprise Linux订阅的一部分提供)或作为CentOS软件集合的一部分: