std::vector<uchar>
例如,我们已经创建并填充了一些openCVimencode
。现在我们想将它流式传输到一些 http_lib 中,例如可以采用某种 ostream(ostringstream),或者我们只想在使用 ofstream 调试程序时保存。所以我想知道如何 std::vector<uchar>
投入std::ostream
?
问问题
2050 次
2 回答
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,但可以通过转换该指针来将 uchar 视为那些。在较旧的编译器上,您可能不得不说&v[0]
而不是v.data()
.
如果您喜欢某些错误检查工具,您可以将结果write()
作为另一个返回,std::ostream&
或者作为一个返回。bool
于 2011-11-15T21:03:52.937 回答
1
根据您希望输出格式的方式,您可以copy
结合使用ostream_iterator
:
#include <iterator>
/*...*/
copy( v.begin(), v.end(), ostream_iterator<uchar>(my_stream,"") );
于 2011-11-15T21:13:20.687 回答