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 红帽 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
相关文章:
- Ctypes wstring通过引用传递
- 在C++中将变量 wstring 分配给 Char 数组
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在 C++ 中将双精度数组中的值"force convert"到字符串输出中?
- 将日语 wstring 转换为 std::string
- 使用 memcpy 将矢量数据复制到 wstring 的正确方法
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- -fshort-wchar 和 std::wstring - 分段错误
- 输出 c++ 窗口 wstring 日志在终端中正确
- 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时出现访问冲突
- 如何将std::wstring转换为char const[]
- 我一直收到错误"cannot convert 'float*' to 'float' in return"
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 找不到 std::wstring 中存在的wchar_t
- 将 char* argv[] 转换为 wstring
- 将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)
- 在 C++ 中将 utf8 wstring 转换为窗口中的字符串
- 地图'Cannot convert from _Ty2 to T*'错误
- 使用 ReadProcessMemory() 将未知大小的字符数组或字符串读入 wstring 中
- Custom Stringstream - Convert std::wstring & std::string