2017-01-24 6 views
-3

この単純なtxtファイルを印刷しようとしています。それはコードごとに成功しているので正しく開かれますが、そこに確かにデータがある場合は「0」になります。エラー:C++でのtxtファイルの印刷のみ "0"

#include <iostream> 
#include <fstream> 
#include <sstream> 

using namespace std; 

int main(){ 

struct item{ 
    string item; 
    string type; 
    int price; 
    }; 


ifstream data("messageBoard.txt"); 
data.open("messageBoard.txt"); 

if (data.is_open()){ 
    cout<<"success"<<endl; 
    } 

cout<<data<<endl; //shouldn't think just print the entire file? It 
//is only printing 0, and I am also getting "success" printed as well 

while(getline(data, word, '\r')){ 
    cout<<"here"<<endl; 

     stringstream ss; 
     int wordindex=0; 
     if(lineindex>0){ 
     ss<<word; 
+2

いいえ、いいえ。起こらなければならないことを仮定しないでください。使用する関数のドキュメントを参照してください。ファイルを印刷することはできません。その内容を印刷することができます。コンテナに格納されているコンテンツ(文字列など)を取得して印刷します。 – DeiDei

+0

getlineを使用してデータ文字列を格納していますが、ループがスキップされています。 – grilam14

答えて

1
cout<<data<<endl; //shouldn't think just print the entire file? It 
//is only printing 0, and I am also getting "success" printed as well 

ファイルを印刷してはいけませんいいえ、。 dataはファイルストリームです。出力ストリームにファイルストリームを挿入するオーバーロードされた演算子はありません。あなたの代わりにコンテンツをストリーミングすることを意図し

Perhas:

cout<<data.rdbuf()<<endl; 

rdbufファイルストリームの関連するストリームバッファを返し、出力ストリームにストリームバッファを挿入する演算子オーバーロードがあります。演算子の動作は、ファイルの終わりに達するまでバッファから抽出することです。


ストリームにストリームを挿入すると、すべてでコンパイルする理由が原因で前C++ 11であり、ストリームはストリームに挿入することができる型に暗黙的に変換しました。

関連する問題