6

std::vector<uchar> 例如,我们已经创建并填充了一些openCVimencode。现在我们想将它流式传输到一些 http_lib 中,例如可以采用某种 ostream(ostringstream),或者我们只想在使用 ofstream 调试程序时保存。所以我想知道如何 std::vector<uchar>投入std::ostream

4

2 回答 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 需要裸chars,但可以通过转换该指针来将 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 回答