2017-01-07 21 views
1

出力をファイルにリダイレクトするコードを実行していますが、fstream、ostream、streambuf()を使用してエラーが発生します。それはストリームを使用してファイルに保存するC++エラー

がいることを言う - "fstreamのは" あいまいです

- "のostreamは、" あいまいな

級 "のstd :: basic_ostream>" "ストリームバッファ" 何のメンバーを持っていない

-class「stdがあります:: shared_ptr "にはメンバーがいません"閉じる "

私はすでにインクルードのためにそれを検索し、カサブランカの残りのAPIの最新バージョンをインストールしました...そして私はまだそれらのエラーを取得します。

ここ

コード

#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'接頭辞を使用してみましたができると思う:あなたのfileStream


EDITに->を使用'std :: fstream'のようなものですか? –

+0

はい。 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"

あなたはそれらが一つのファイルにusingで引かれることはありませんことを確認したり、明示的に

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

concurrency::streamsを使用するか、 std::とカサブランカの concurrency::streams名前空間を衝突されています

しかしそれはありません!私はあなたのコードは何もなく、公式のsampleを少し変更したバージョンではありません、あなたはちょうどあなたが右の

関連する問題