其他分享
首页 > 其他分享> > c – 如何告诉wstring我正在提供的字符串已经是一个字符串?

c – 如何告诉wstring我正在提供的字符串已经是一个字符串?

作者:互联网

我使用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,stl,wstring
来源: https://codeday.me/bug/20190903/1798298.html