2017-07-04 4 views
1

Wie konvertiere ich die std::string zu boost::asio::streambuf? Jede Leitung wird geschätzt.Konvertieren std :: string zu boost :: asio :: streambuf

Anfangs verwendete ich boost::asio::read_until(pNetworkConnector->getSocket(), response, "\r\n"); die boost::asio::streambuf response initialisiert und ich konvertiert sie zu Grunde liegenden Strom dh

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

Aber jetzt direkt eine std::string mit curl wie ich dieses

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; 
} 

und verwendet es als

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

Wie kann ich konvertieren std::string bis boost::asio::streambuf oder std::streambuf?

Antwort

2

Der folgende Code zeigt, wie zwischen std::string und boost::asio::streambuf konvertieren, sieht es 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; 
} 
Verwandte Themen