簡體   English   中英

如何將char的向量轉換為stringstream

[英]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.

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