2016-01-12 51 views
1

Here,我发现了一种将数据转换成一个提振缓冲:助推ASIO缓冲数据

#include <memory> 
#include <boost/asio.hpp> 

int main() 
{ 
    struct { float a, b; } data1; 

    auto mutable_buffer = boost::asio::buffer(data); 
} 

怎么做的其他方式?我的意思是将recv_buf.data()转换成data1

socket.receive_from(boost::asio::buffer(recv_buf), 
     remote_endpoint, 0, error); 
    data1=recv_buf.data() ??????? 

回答

1

可以包这样的:

​​

,并使用memcpy解压,但仅限于POD类型。

const char* b = boost::asio::buffer_cast<const char*>(mutable_buffer); 
object o; 
memcpy(&o, b, boost::asio::buffer_size(mutable_buffer)); 

Live on Coliru