C ++在Linux上使用wstring_convert

时间:2018-06-14 23:27:03

标签: c++ gcc multibyte-characters

我希望能够将从文件中读取的文本转换为多字节字符。 我在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不可用,我能做些什么吗?

2 个答案:

答案 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软件集合的一部分: