我们已经创建了一些std::vector<uchar>
并填充了openCV imencode
。现在我们想要将它流式传输到一些http_lib中,例如可以采用某种ostream(ostringstream),或者我们只想在使用ofstream调试程序时保存。所以我想知道如何将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
返回。
答案 1 :(得分:1)
根据您希望格式化输出的方式,您可以将copy
与ostream_iterator
结合使用:
#include <iterator>
/*...*/
copy( v.begin(), v.end(), ostream_iterator<uchar>(my_stream,"") );