将 std::string 转换为 std::wstring 的 C++ 问题 - Windows 与 Linux

标签 c++ string std wstring

我正在尝试将字符串 "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/

相关文章:

python - 多行字符串的正确缩进?

C++ std::tr1::hash::operator() 未定义?

c++ - gcc/C++ : If CPU load is low, 那么代码优化没什么用,对吗?

c++ - 如何正确截断整数类型

c# - 如何创建更加用户友好的 string.format 语法?

c++ - std::function 的重载运算符?

c++ - 具体类的单独头文件 - C++

php - 混合任何字符串列表(数组)的算法

c++在辅助std线程上运行代码

c++ - arma::rowvec 来自 std::vector<int>