gpt4 book ai didi

C++ 在字节 vector 和 wstring 之间转换

转载 作者:太空狗 更新时间:2023-10-29 20:23:13 26 4
gpt4 key购买 nike

我需要在低级别处理存储在宽字符串中的数据。我可以使用以下方法转换为 Bytesvector:

typedef unsigned char Byte;

wstring mystring = L"my wide string";
Byte const *pointer = reinterpret_cast<Byte const*>(&mystring[0]);
size_t size = mystring.size() * sizeof(mystring.front());
vector<Byte> byteVector(pointer, pointer + size);

但是,我在走另一条路时遇到了麻烦;我对类型转换不是很熟悉。如何将 Bytesvector 转换为 wstring

最佳答案

#include <string>
#include <codecvt>

std::wstring wstring_convert_from_char( const char *str )
{
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.from_bytes( str );
}

std::string string_convert_from_wchar( const wchar_t *str )
{
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.to_bytes( str );
}

std::wstring wstring_convert_from_bytes( const std::vector< char > &v )
{
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
return converter.from_bytes( v.data(), v.data() + v.size() );
}

std::vector< char > wstring_convert_to_bytes( const wchar_t *str )
{
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
std::string string = converter.to_bytes( str );
return std::vector< char >( string.begin(), string.end() );
}

关于C++ 在字节 vector 和 wstring 之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113871/

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