我正在尝试在visual studio中创建一个异步服务器,然后使用
boost::asio::async_read(m_socket, boost::asio::buffer(m_buffer),
boost::bind(&tcp_connection::handle_read, shared_from_this(),
boost::asio::placeholders::error));
将缓冲区放入m_buffer
boost::array<char, 256> m_buffer;
但是如何获得这个东西的大小,m_buffer?
size()没有用,end()没有用。任何帮助都会很棒。提前谢谢。
答案 0 :(得分:2)
boost::array
的大小不变。如果要将其打印为以null结尾的字符串,请使用.data()
to get a const char*
。
如果您只是想找到\0
,use std::find
。
int size = find(array.begin(), array.end(), '\0') - array.begin();
答案 1 :(得分:0)
boost :: arrays具有基于第二个模板参数的常量大小。您可以通过调用size()方法来检索它们的大小。请参阅boost::array documentation。
答案 2 :(得分:0)
如果您指定缓冲区的大小为256,然后在缓冲区中的位置0
放置一个字符并尝试cout
缓冲区,它将打印整个缓冲区。这是因为程序无法知道您在缓冲区中只放置了一个“有效”字符。您需要自己在缓冲区中保留一个单独的“指针”,以便您知道数据的结束位置以及缓冲区的“空”部分开始。