<<运算符抛出编译错误

时间:2014-04-25 14:56:27

标签: c++

我正在关注下面的基本libcurl curlcpp示例

#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>

#include <string>
#include <sstream>
#include <iostream>

// RAII cleanup 
curlpp::Cleanup myCleanup;

// standard request object.
curlpp::Easy myRequest;

int main(int, char**)
{
    // Set the URL.
    myRequest.setOpt(new curlpp::options::Url(std::string("http://www.wikipedia.com")));

    // Send request and get a result.
    // By default the result goes to standard output.
    // Here I use a shortcut to get it in a string stream ...
    std::ostringstream os;
    os << myRequest.perform();

    std::string asAskedInQuestion = os.str();

    return 0;
}

我使用c ++已经有一段时间但是我确信我已经使用了&lt;&lt;操作员之前。我是否缺少使其成功的包含?

1 个答案:

答案 0 :(得分:3)

您不能像这样重定向标准输出:为了使<<运算符起作用,myRequest.perform()成员函数需要返回其输出 - 作为string或另一个对于输出流存在<<运算符重载的对象。

由于myRequest.perform()无效,您需要告诉curlpp使用其他机制写入字符串流。在curlpp中,通过设置写入流选项来完成 - 像这样:

std::ostringstream os;   // Here is your output stream
curlpp::options::WriteStream ws(&os);
myRequest.setOpt(ws);    // Give it to your request
myRequest.perform();     // This will output to os