在http://www.boost.org/doc/libs/1_59_0/doc/html/boost_asio/reference/async_write/overload1.html 它声明缓冲区“调用者保留了底层内存块的所有权,这必须保证它们在调用处理程序之前保持有效。”
为了做到这一点,我首先通过以下方法为缓冲区创建一个shared_ptr:
request_buff_ = std::make_shared<boost::asio::const_buffer> (boost::asio::buffer(request_str));
其中request_str是std :: string。然后在写作前取消引用:
boost::asio::write(socket, *request_buff_);
获取以下编译错误:
'const_iterator': is not a member of 'boost::asio::const_buffer'
答案 0 :(得分:4)
缓冲区是一个简单的引用(指针+大小元组)。它可以按价值便宜地复制。相反,使底层存储共享,例如。
_search?preference=_primary