打印boost :: array<>到stdout

时间:2016-02-25 19:44:43

标签: c++ c++11 boost

我的boost::array声明如下

typedef boost::array<unsigned char, 4096> m_array_type;
m_array_type m_recv_buf;

我想将m_recv_buf输出到stdout

std::cout << m_recv_buf << std::endl;

似乎不起作用?如何将其打印到stdout

2 个答案:

答案 0 :(得分:2)

使用ostream.write

std::cout.write(&m_recv_buf[0], len);

另外,您指定了C ++ 11标记。考虑使用std :: array,它现在是标准的。

答案 1 :(得分:1)

如果要将m_array_type打印为字符串,则需要使用空终止符正确结束字符串。所以这种方法创建了一个std::string类型,显式地将长度发送给std::string构造函数。

std::cout << std::string(reinterpret_cast<const char*>(m_recv_buf.data()), m_recv_buf.size()) << std::endl;

我认为对于必须使用您的代码的其他人来说,这种方式会很明显。但如果m_array_type改变它的类型,那么之前的答案会更好。