[英]How to convert from stringstream to unsigned char vector and vice versa?
[英]How to convert vector of char to stringstream
是否可以將char矢量轉換為std::stringstream
? 例如:
std::vector<unsigned char> data;
std::stringstream st(????);
有什么方法可以將data
值賦給st
嗎?
如果我們查看std::stringstream
構造函數,我們會看到第二個構造函數是:
explicit basic_stringstream( const std::basic_string<CharT,Traits,Allocator>& str,
ios_base::openmode mode = ios_base::in|ios_base::out );
而basic_string
的構造函數包括:
template< class InputIt >
basic_string( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
因此,我們可以做到:
std::vector<unsigned char> data(20);
std::stringstream st(std::string(data.begin(), data.end()));
提供vec
向量和strstr
(o)字符串流:
copy(vec.begin(), vec.end(), ostream_iterator<char>(strstr));
如果您嘗試這樣做:
std::stringstream st(data.data());
你會從gcc得到這個錯誤:
錯誤:從'unsigned char *'到'const __string_type&{aka const std :: basic_string&}'[-fpermissive]的用戶定義轉換無效
請注意,gcc正在嘗試將參數轉換為std::string
。
Barry建議在他的回答中明確構建std::string
。
但是如果你的std::vector<unsigned char> data
以null結尾,那么你可以利用隱式構造。 您只需要更改為可以構造std::string
。
std::stringstream st(reinterpret_cast<char*>(data.data()));
一個可能更容易的解決方案是將std::vector<unsigned char> data
的類型更改為std::vector<char> data
。 在這種情況下,不需要演員:
std::stringstream st(data.data());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.