是否可以將char向量轉換爲std::stringstream
?例如:如何將char向量轉換爲stringstream
std::vector<unsigned char> data;
std::stringstream st(????);
是否存在被我可以分配的data
價值st
什麼辦法?
是否可以將char向量轉換爲std::stringstream
?例如:如何將char向量轉換爲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)的stringstream:
copy(vec.begin(), vec.end(), ostream_iterator<char>(strstr));
如果您嘗試這樣做:
std::stringstream st(data.data());
你會得到從GCC這個錯誤:
error: invalid user-defined conversion from 'unsigned char*' to 'const __string_type& {aka const std::basic_string&}' [-fpermissive]
注意GCC試圖論證轉換到std::string
。
Barry建議在他的回答中明確構建std::string
。
但是如果您的std::vector<unsigned char> data
爲空終止那麼您可以利用隱式構造。你只需要改變一下std::string
就可以構建。
std::stringstream st(reinterpret_cast<char*>(data.data()));
一個潛在的更容易的解決方案是的std::vector<unsigned char> data
的類型更改爲std::vector<char> data
。在這種情況下沒有鑄造是必需的:
std::stringstream st(data.data());
此代碼正在引發讀取溢出 - OP的「std :: vector
@LThode這是一個我沒有考慮過的優秀點。我已將條件添加到答案中。 – 2015-02-10 16:47:25
我試圖「的std :: stringstream的SS; 的std ::字符串str(CL_Data.begin(),CL_Data.end()); ss.str(STR );」它也在工作,但我正在尋找從vector到stringstream的直接轉換 – 2015-02-10 12:03:19