如何将boost :: asio :: streambuf转换为std :: string?

时间:2009-12-14 08:53:44

标签: c++ boost-asio

我想将boost :: asio :: streambuf转换为std :: string 我该如何轻松地做到这一点?

3 个答案:

答案 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;