C++ 在 Linux 上使用 wstring_convert
C++ Use of wstring_convert on Linux
我希望能够将从文件中读取的文本转换为多字节字符。
我在 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 不可用,我可以做一些等效的事情吗?
很可能你的标准设置不正确。 std::wstring_convert
首次在 C++11 中引入并在 C++17 中弃用,因此您需要添加编译器标志 -std=c++11
或 -std=c++14
.
编辑:
刚刚看到您正在使用的 GCC 版本。它已经过时了。如果您下载 GCC 4.9.x 或更高版本
,一切都应该可以正常工作
您必须使用较新的 GCC 版本。预编译版本是开发人员工具集的一部分(作为大多数 Red Hat Enterprise Linux 订阅的一部分提供)或作为 CentOS 软件集合的一部分:
我希望能够将从文件中读取的文本转换为多字节字符。 我在 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 不可用,我可以做一些等效的事情吗?
很可能你的标准设置不正确。 std::wstring_convert
首次在 C++11 中引入并在 C++17 中弃用,因此您需要添加编译器标志 -std=c++11
或 -std=c++14
.
编辑: 刚刚看到您正在使用的 GCC 版本。它已经过时了。如果您下载 GCC 4.9.x 或更高版本
,一切都应该可以正常工作您必须使用较新的 GCC 版本。预编译版本是开发人员工具集的一部分(作为大多数 Red Hat Enterprise Linux 订阅的一部分提供)或作为 CentOS 软件集合的一部分: