2016-02-25 58 views
0

我声明为下面印刷升压::阵列<>到stdout

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

boost::array一个我想输出m_recv_bufstdout

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

似乎不工作?如何打印这stdout

+0

C++容器通常没有标准的输出方式。无论如何,你会期望输出结果如何? – Cubic

+0

@Cubic - 我想将数组的内容打印到屏幕上。 – liv2hak

+0

但是如何?这是不明确的。你想要一个漂亮的数组打印?你想把它当作一个字符串吗?我不知道你想从你的描述中得到什么。 – Cubic

回答

2

使用ostream.write

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

此外,您所指定的C++ 11的标签。考虑使用现在是标准的std :: array。

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改变了它的类型,以前的答案会更好。