2016-02-25 146 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改變了它的類型,以前的答案會更好。