例如,我們已經創建並填充了一些std::vector<uchar>
和openCV imencode
。現在我們想要將它流式傳輸到一些http_lib中,例如可以採用某種類型的ostream(ostringstream),或者我們只是想用instream調試我們的程序時保存。所以我不知道如何把std::vector<uchar>
放入std::ostream
?如何將`std :: vector <uchar>`保存到`std :: ostream`中?
5
A
回答
11
使用write
:
void send_data(std::ostream & o, const std::vector<uchar> & v)
{
o.write(reinterpret_cast<const char*>(v.data()), v.size());
}
的ostream的預期裸char
S,但它是精細鑄造該指針對待uchars那些。在較老的編譯器上,您可能不得不說&v[0]
而不是v.data()
。
如果您喜歡一些錯誤檢查功能,您可以將write()
的結果作爲另一個std::ostream&
返回或作爲bool
返回。
+0
+10考慮非C++ 11編譯器的可能性。當然,對於實際答案+1。 –
+1
@ChristianRau:我認爲這是一個二元+10 :-) –
1
根據您想要的輸出格式,你也許可以結合使用copy
與ostream_iterator
:
#include <iterator>
/*...*/
copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,""));
相關問題
- 1. 爲什麼`std :: common_type_t <std :: ostream&,std :: ostream&>`等於`std :: ostream`而不是`std :: ostream&`?
- 2. std :: vector <std :: vector <T>> vs std :: vector <T*>
- 3. iterate std :: vector <std :: vector <char>>?
- 4. 將std :: vector <std :: unique_ptr <T>>移動到std :: vector <std :: shared_ptr <T>>
- 5. C++ std :: vector <std :: shared_ptr>
- 6. 展開std :: vector <std :: vector <T>>轉換爲std :: vector <T>
- 7. CGAL如何將std :: vector <Point>點保存爲.xyz文件?
- 8. std :: ostream {aka std :: basic_ostream <char>}將值設爲'std :: basic_ostream <char> &&
- 9. 將std :: vector <std :: vector <float>>轉換爲float **
- 10. 如何從std :: vector <>
- 11. 將std :: stringstream數據有效地解析爲std :: vector <std :: vector <double>>
- 12. std :: sort on std :: vector <std::string>
- 13. std :: ostream&operator <<(std :: ostream&sstr,const T&val)的模糊重載
- 14. std :: ostream&operator <<(std :: ostream&,const T&)不被覆蓋
- 15. 如何到達2d std :: vector的第N個元素(`std :: vector <std :: vector <T>>`)?
- 16. 將std :: vector <std :: pair <const K, V> *>轉換爲std :: vector <std :: pair <const K, V>>
- 17. 如何將std :: vector <unsigned short>轉換爲std :: vector <int>?
- 18. std :: ostream到QString?
- 19. C++循環std :: vector <std :: map <std :: string,std :: string>>
- 20. std :: vector <T>
- 21. 如何迭代boost :: variant <std :: vector <int>,std :: vector <String>>?
- 22. 將std :: shared_ptr << std :: vector <double>>傳遞給函數
- 23. 將std :: vector複製到std :: array
- 24. std :: vector <float> to std :: vector <glm::vecX>沒有複製
- 25. 解引用不能用於std :: vector <std :: vector <double>>
- 26. 在std :: vector上使用std :: unique()<std :: unordered_set <T>>
- 27. 將std :: string數據的深拷貝存儲到std :: vector中
- 28. 如何從C++向C++/CLI返回std :: vector <std :: vector <int>>?
- 29. std :: size_t或std :: vector <Foo> :: size_type?
- 30. C++ - 如何將std :: priority_queue中的元素複製到std :: vector
可能是通過遍歷元素和流各一獨立。 –