簡體   English   中英

C ++在Byte vector和wstring之間進行轉換

[英]C++ convert between Byte vector and wstring

我需要以較低的級別處理存儲在寬字符串中的數據。 我可以使用以下方法轉換為Bytes vector

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);

但是,我遇到了麻煩; 我對鑄造不是很熟悉。 如何將Bytes vector轉換為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() );
}

你可以這樣做
mystring.assign(reinterpret_cast<wstring::const_pointer>(&byteVector[0]), byteVector.size() / sizeof(wstring::value_type));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM