2011-11-15 77 views
5

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

+0

可能是通過遍歷元素和流各一獨立。 –

回答

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

根據您想要的輸出格式,你也許可以結合使用copyostream_iterator

#include <iterator> 

/*...*/ 

copy(v.begin(), v.end(), ostream_iterator<uchar>(my_stream,"")); 
相關問題