【发布时间】:2021-07-27 03:56:37
【问题描述】:
以下代码失败,我似乎无法弄清楚原因。
std::string s = "–";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wide = converter.from_bytes(s);
我尝试阅读 UTF-8,但无法弄清楚。将初始字符串存储为 wstring,将其转换为字符串,然后将其转换回正确的结果。
std::wstring ws = L"–";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::string narrow = converter.to_bytes(ws);
std::wstring wide = converter.from_bytes(narrow);
【问题讨论】:
-
128 之后的所有扩展 ascii 字符似乎都会出现问题
-
我从stackoverflow.com/a/18597384/6368600 获取了代码,根据它应该可以工作。