我正在尝试将字符串 "pokémon"
从 std::string 转换为 std::wstring using
std::wstring wsTmp(str.begin(), str.end());
这适用于 Windows,但在 Linux 上它返回 "pok\xffffffc3\xffffffa9mon"
如何让它在 Linux 上运行?
最佳答案
这对我适用于 POSIX。
#include <codecvt>
#include <string>
#include <locale>
int main() {
std::string a = "pokémon";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> cv;
std::wstring wide = cv.from_bytes(a);
return 0;
}
wstring
在末尾保存正确的字符串。
@NathanOliver 的重要说明:std::codecvt_utf8_utf16
在 C++17 中已弃用,可能会在未来版本中从标准中删除。
关于将 std::string 转换为 std::wstring 的 C++ 问题 - Windows 与 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72738654/