簡體   English   中英

如何保存`std :: vector <uchar> `進入`std :: ostream`?

[英]How to save `std::vector<uchar>` into `std::ostream`?

我們用openCV imencode創建並填充了一些std::vector<uchar> 現在我們想要將它流式傳輸到一些http_lib中,例如可以采用某種類型的ostream (ostringstream),或者我們只想在使用ofstream調試程序時保存。 所以我想知道如何將std::vector<uchar>放入std::ostream

使用write

void send_data(std::ostream & o, const std::vector<uchar> & v)
{
  o.write(reinterpret_cast<const char*>(v.data()), v.size());
}

ostream期望裸char ,但通過投射指針來處理uchars就好了。 在較舊的編譯器上,您可能不得不說&v[0]而不是v.data()

如果你喜歡一些錯誤檢查工具,你可以將write()的結果作為另一個std::ostream&或者作為bool

根據您希望輸出格式化的方式,您可以將copyostream_iterator結合使用:

#include <iterator>

/*...*/

copy( v.begin(), v.end(), ostream_iterator<uchar>(my_stream,"") );

暫無
暫無

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

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