2017-01-07 37 views
1

我正在做一些代码,我将输出重定向到一个文件,但我得到错误使用fstream,ostream,streambuf()。它说,C++错误保存到文件使用流

- “fstream的” 不明确

- “ostream的” 不明确

-class “的std :: basic_ostream>” 没有成员 “流缓冲”

-class“STD :: shared_ptr“没有会员”关闭“

我已经搜索它的包括,安装最新版本的卡萨布兰卡的休息api,...我仍然得到那些erros ..其缺失的一些包括?

下面是代码

#include <sstream> 
#include <iostream> 
#include <fstream> 
#include <cpprest/http_client.h> 
#include <cpprest/filestream.h> 
#include <cpprest/http_listener.h>    // HTTP server 
#include <cpprest/json.h>      // JSON library 
#include <cpprest/uri.h>      // URI library 
#include <cpprest/ws_client.h>     // WebSocket client 
#include <cpprest/containerstream.h>   // Async streams backed by STL containers 
#include <cpprest/interopstream.h>    // Bridges for integrating Async streams with STL and WinRT streams 
#include <cpprest/rawptrstream.h>    // Async streams backed by raw pointer to memory 
#include <cpprest/producerconsumerstream.h>  // Async streams for producer consumer scenarios 


using namespace utility;     // Common utilities like string conversions 
using namespace web;      // Common features like URIs. 
using namespace web::http;     // Common HTTP functionality 
using namespace web::http::client;   // HTTP client features 
using namespace concurrency::streams;  // Asynchronous streams 

using namespace web::http::experimental::listener;   // HTTP server 
using namespace web::experimental::web_sockets::client;  // WebSockets client 
using namespace web::json; 



//Method 

    auto fileStream = std::make_shared<std::ostream>(); 

    // Open stream to output file. 
    pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile) //Error here on the fstrea and ostream 
    { 
     *fileStream = outFile; 

     // Create http_client to send the request. 
     http_client client(U("http://localhost:53213")); 

     // Build request URI and start the request. 
     uri_builder builder(U("/search")); 
     builder.append_query(U("q"), U("cpprestsdk github")); 
     return client.request(methods::GET, builder.to_string()); 
    }) 

     // Handle response headers arriving. 
     .then([=](http_response response) 
    { 
     printf("Received response status code:%u\n", response.status_code()); 

     // Write response body into the file. 
     return response.body().read_to_end(fileStream->streambuf()); //Error here on streambuf 
    }) 

     // Close the file stream. 
     .then([=](size_t) 
    { 
     return fileStream.close(); //Error on close 

    }); 

    // Wait for all the outstanding I/O to complete and handle any exceptions 
    try 
    { 
     requestTask.wait(); 
    } 
    catch (const std::exception &e) 
    { 
     printf("Error exception:%s\n", e.what()); 
    } 
+1

您是否尝试过使用'std'前缀,如'std :: fstream'? –

+0

是的。如果我在这里添加std :: fstream:fstream :: open_ostream(U(“results.html”))。然后([=](ostream outFile),我得到以下错误:\t class“std :: basic_fstream >“没有成员”open_ostream“ – Tazz

+1

@Tazz它没有'open_ostream'成员,请停止猜测并阅读一些文档,一本好书也许是个好主意, – molbdnilo

回答

1

-"fstream" is ambiguous

-"ostream" is ambiguous

-class "std::basic_ostream>" has no member "streambuf"

您冲突std::和卡萨布兰卡的concurrency::streams命名空间,无论是确保他们从来没有在一个文件中与using拉或使用concurrency::streams明确

-class "std::shared_ptr" has no member "close"

但它不!您fileStream


编辑使用->:我觉得你的代码是什么,但官方sample稍作修改的版本,你可以在你得到它只是仔细检查权