2017-07-04 20 views
1

std::stringboost::asio::streambufに変換するにはどうすればよいですか? いずれのリードも高く評価されています。std :: stringをboost :: asio :: streambufに変換する

は当初、私はboost::asio::streambuf responseを初期化しboost::asio::read_until(pNetworkConnector->getSocket(), response, "\r\n");を使用し、私は

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::string~boost::asio::streambufまたはstd::streambuf

答えて

2

次のコードは、それonline at ideone見、std::stringboost::asio::streambuf間の変換する方法を示しています。

#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; 
} 
関連する問題