C++ 在 Linux 上使用 wstring_convert

C++ Use of wstring_convert on Linux

本文关键字:wstring convert Linux C++      更新时间:2023-10-16

我希望能够将从文件中读取的文本转换为多字节字符。 我在 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 红帽 4.4.7-4。 根据我阅读的内容,我已经导入了"区域设置",但它仍然找不到它。

如果wstring_convert不可用,我是否可以执行等效的操作?

很可能您的标准设置不正确。std::wstring_convert在 C++11 中首次引入,并在 C++17 中弃用,因此您需要添加编译器标志-std=c++11-std=c++14

编辑: 刚刚看到您正在使用的 GCC 版本。它已经过时了。如果您下载GCC 4.9.x或更高版本,一切应该可以正常工作

您必须使用较新的 GCC 版本。 预编译版本是开发人员工具集的一部分(作为大多数红帽企业 Linux 订阅的一部分提供(或作为 CentOS 软件集合的一部分:

  • devtoolset-7