gpt4 book ai didi

c++ - 我如何告诉一个 wstring 我正在喂它的字符串已经是一个 wstring?

转载 作者:太空狗 更新时间:2023-10-29 20:30:55 27 4
gpt4 key购买 nike

我正在使用 std::string 作为文本缓冲区。然后,我确定该缓冲区中包含的数据是 UTF-16(即它实际上是一个 std::wstring)。 如何将 std::string 强制转换为 std::wstring? std::string 用词不当,数据实际上是 wstring。

最佳答案

考虑使用 std::vector<char>而不是 std::string .当您需要“连续的字节序列”时,它是正确的容器。

std::vector源容器,代码相当简单,假设您真的只想重新解释数据(即,您真的只想将字节视为 wchar_t 的序列):

std::vector<char> v = get_my_wstring_character_data();
if (v.size() % sizeof (wchar_t) != 0)
throw std::runtime_error("Invalid wstring length");

std::wstring ws(reinterpret_cast<wchar_t*>(&v[0]),
reinterpret_cast<wchar_t*>(&v[0] + v.size()));

如果您的来源是 std::string ,如果你能保证 std::string 的实现,同样的方法也能奏效。您正在使用连续存储其字符。实际上,情况总是如此。

关于c++ - 我如何告诉一个 wstring 我正在喂它的字符串已经是一个 wstring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com