Joo*_*ook 7 c++ vector boost-asio
我无法在这里使这条线路正确:
boost::asio::async_write(serialPort,
boost::asio::buffer(
boost::asio::buffer_cast<const void*>(vector_.front()),
boost::asio::buffer_size(vector_.front())))
Run Code Online (Sandbox Code Playgroud)
vector_ 拥有一些 boost::asio::const_buffers
std::vector<boost::asio::const_buffer> vector_;
Run Code Online (Sandbox Code Playgroud)
这个东西有效,但我很确定有一种更优雅的方式可以做到这一点,如果没有,我想在这里有更多经验的人.
那么,这个解决方案可以改进吗?如果是这样,怎么样?
我想你正在寻找这个:
boost::asio::async_write(serialPort, make_buffer(vector_.front()) );
Run Code Online (Sandbox Code Playgroud)
其中make_buffer定义为:
template<typename TBuffer>
boost::asio::buffer make_buffer(TBuffer & data)
{
auto buf = boost::asio::buffer_cast<const void*>(data);
auto size= boost::asio::buffer_size(data);
return boost::asio::buffer(buf, size);
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这是一个通用的功能.