C++ 将数据从 std::string 复制到 std::wstring

标签 c++ windows string unicode encoding

假设我有一个 std::string,但数据是用 UTF-16 编码的。
我如何才能将该数据复制到 std::wstring 中,而根本不修改数据?

此外,我不能只使用 std::wstring,因为我正在在线检索文本文件并检查 Content-Type header 字段以确定编码。但是使用 std::string 来接收数据。

最佳答案

std::wstring PackUTF16(const std::string & input)
{
    if (input.size() % 2 != 0)
        throw std::invalid_argument("input length must be even");
    std::wstring result(input.size() / 2, 0);
    for (int i = 0;  i < result.size();  ++i)
    {
        result[i] = (input[2*i+1] & 0xff) << 8 | (input[2*i] & 0xff); // for little endian
        //result[i] = (input[2*i] & 0xff) << 8 | (input[2*i+1] & 0xff); // for big endian
    }
    return result;
}

关于C++ 将数据从 std::string 复制到 std::wstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247853/

相关文章:

c++ - 规则属性的兼容性

c++ - 无法杀死 std::thread

javascript - 如何拆分和分配 2 个单词?

python - 通过网络同时运行 python 脚本。这个可以吗?

windows - 在 cygwin 下的 Windows 应用程序中有时无法识别输入 key

c - 段错误 : 11 in basic single source C program

python - 如何将 32 位整数编码为字节数组?

c++ - 使用 ESP Open SDK 部署到 ESP8266

c++ - 有条件包含 : integral constant expression is unlimited?

windows - REG ADD - 语法无效