2014-04-25 79 views
1

我遵循以下<<運營商拋出編譯錯誤

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

基本的libcurl curlcpp例如,它已經有一段時間,因爲我用C++,但我相信,我以前用過的< <操作。我是否缺少一個包含它的工作?

+1

根據http://www.animemanga-ita.net/francesco/curlplusplus_doc/classcurlpp_1_1easy.html'curlpp ::容易::執行()'有返回類型'void',即什麼都沒有。 'void'不能是'ostream :: operator <<'的參數。 – Tobias

+0

請粘貼錯誤信息中的相關行。 – vrdhn

+0

托比亞斯是正確的,當一個圖書館提供的例子甚至不起作用時,這是一個恥辱。 – JME

回答

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