c++ - 将 std::string 转换为 boost::asio::streambuf

标签 c++ boost

如何将 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);

但现在我像这样使用 curl 直接得到一个 std::string

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

并将其用作

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

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

最佳答案

下面的代码展示了如何在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;
}

关于c++ - 将 std::string 转换为 boost::asio::streambuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904295/

相关文章:

c++ - ptree get_value,名称包括 “.”

c++ - 不同类型的 boost 功能图?

c++ - 如何对包含通过索引相互关联的数据的多个数组进行排序

c++ - OpenCV 线的平均方向/角度

c++ - 非静态数据成员类推导

c++ - Boost 单位使用问题 - hash_value、计数乘法

c++ - #include <boost/chrono.hpp> 导致无法解析的外部符号,使用了 bcp

c++ - 将现有的 .h 和 .c 文件添加到 Microsoft Visual Studio 2010 C++ 项目

c++ - 如何使 '=' 重载在 '=' 的另一端工作

c++ - spirit boost : parameter type when using semantic actions and phoenix