2017-01-24 5 views
-3

Ich versuche nur diese einfache TXT-Datei zu drucken. Es wird korrekt geöffnet, weil es für den Code erfolgreich ist, aber ich bekomme nur "0", wenn mehr Daten drin sind.Fehler: Drucken TXT-Datei in C++ nur Drucken "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

Nein, nein. Nimm nicht an, was passieren soll. Suchen Sie in der Dokumentation nach den Funktionen, die Sie verwenden. Sie können keine Datei drucken, Sie können den Inhalt drucken. Holen Sie den Inhalt in einem Container (z. B. eine Zeichenfolge) und drucken Sie diesen. – DeiDei

+0

Ich verwende getline, um eine Datenkette zu speichern, aber die Schleife wird übersprungen. – grilam14

Antwort

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 

Nein, das sollte die Datei nicht drucken. data ist ein Dateistream. Es gibt keinen überladenen Operator, um einen Dateistream in einen Ausgabestream einzufügen.

Perhas Sie sollen die Inhalte streamen statt:

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

rdbuf gibt den zugehörigen Strompuffer des Datei-Stream, und es gibt ein Bediener Überlastung einen Strompuffer in einen Ausgangsstrom einzufügen. Das Verhalten des Operators besteht darin, aus dem Puffer zu extrahieren, bis das Dateiende erreicht ist.


Der Grund, warum ein Strom in einen Strom eingefügt ist überhaupt zusammenstellen können, da vor der 11 C++, Ströme auf einen Typ konvertierbar implizit waren, die in einen Strom eingeführt werden kann.