我想将boost :: asio :: streambuf转换为std :: string 我该如何轻松地做到这一点?
答案 0 :(得分:6)
我使用这种方法:
boost::asio::streambuf stream_buf;
...
std::string s( (std::istreambuf_iterator<char>(&stream_buf)), std::istreambuf_iterator<char>() );
你可以从其他类型的流中读取整个数据,例如,ifstream。
答案 1 :(得分:1)
没试过,但如果我正确阅读了文档,这个类继承自std::streambuf
,在这种情况下你可以这样做:
std::istream buffer( my_asio_streambuf_ptr );
std::stringstream string_buffer;
string_buffer >> buffer.rd_buf();
有很多方法可以做到这一点,每个方法都有它的优点和缺点。如果您能够更详细地解释问题,我们可以提供更具体的帮助。
答案 2 :(得分:-1)
这样的事情可能就是你所追求的:
boost::asio::streambuf myBuffer;
std::string myString;
// Convert streambuf to std::string
std::istream(&myBuffer) >> myString;