我想設置一個函數來將序列化的數據寫入套接字,但是我不知道什麼對象我應該包裝boost :: buffer周圍。官方boost文檔中的示例使用std :: ostringstream並從str()成員(類型std :: string)構造緩衝區,但我無法做到這一點。編寫串行化數據到一個套接字與boost :: asio
sendData(const std::vector<_t> values){
std::stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << values;
int n = client_sock.write_some(boost::asio::buffer(&oa,sizeof(oa),ec);
}
當我嘗試使用ss.str(),而不是OA構建緩衝,我得到:
error: no matching function for call to buffer(std::basic_ostringstream<char>::__string_type*&, long unsigned int&, boost::system::error_code&)’`
int n = client_sock.write_some(boost::asio::buffer(&ss.str(),sizeof(ss.str()),ec);
改爲使用底層'stringstream'中的字符串。 – 2015-04-04 12:01:44
@JoachimPileborg不起作用。我已經更新了我的問題。 – joaocandre 2015-04-04 12:06:17