2017-07-04 128 views
1

如何将std::string转换为boost::asio::streambuf? 任何铅是赞赏。将std :: string转换为boost :: asio :: streambuf

最初我用boost::asio::read_until(pNetworkConnector->getSocket(), response, "\r\n");其中初始化boost::asio::streambuf response和我它转换为底层流即

boost::asio::streambuf* responsePointer = &response; 
iResponseStream.rdbuf(responsePointer); 

但现在我使用卷曲这样

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) 
{ 
    ((std::string*)userp)->append((char*)contents, size * nmemb); 
    return size * nmemb; 
} 

直接得到std::string,并用它作为

curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, WriteCallback); 
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &readBuffer); 

我该如何转换std::stringboost::asio::streambufstd::streambuf

回答

2

下面的代码演示了如何std::stringboost::asio::streambuf之间的转换,把它online at ideone

#include <iostream> 
#include <boost/asio/streambuf.hpp> 
#include <boost/asio/buffer.hpp> 

int main() 
{ 
    /* Convert std::string --> boost::asio::streambuf */ 
    boost::asio::streambuf sbuf; 
    std::iostream os(&sbuf); 
    std::string message("Teststring"); 
    os << message; 

    /* Convert boost::asio::streambuf --> std::string */ 
    std::string str((std::istreambuf_iterator<char>(&sbuf)), 
        std::istreambuf_iterator<char>()); 

    std::cout << str << std::endl; 
} 
相关问题