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