2016-05-14 14 views
-1

enthält, nehme ich eine Textdatei, die Textdaten wie haben: enter image description hereLesetextdatei gemischten Daten in C++

Ich lese diese Datei in C++ wie

ifstream file("book_inventory.txt"); 
    string content; 
     int i=0; 
    while(file >> content) { 
cout << content << ' '; 
} 

aber alle Ausgaben anzeigen in einer einzigen Zeile, ohne dass eine neue Zeile angezeigt wird.

+1

Hast du vergessen '<<„\ n“ ; '? – PaulMcKenzie

+0

versucht, aber das gleiche Ergebnis –

Antwort

2

Lesen Sie die gesamte Zeile mit z. std::getline Verwenden Sie dann eine std::istringstream, um zunächst die drei Zahlen auszuwerten. Dann wird es ein bisschen schwieriger. Wenn der Name (wie beispielsweise "James Pilgrim") immer zwei "Wörter" ist, können Sie den normalen Eingabeoperator >> verwenden, um die Namen zu erhalten, und dann std::getline erneut, um den letzten Teil zu erhalten.

Wenn der Name ein, zwei oder mehr Wörter sein kann, dann ist es eigentlich unmöglich zu sagen, wann die Personennamen enden und der Titel beginnt.

Wenn Sie den Inhalt nicht analysieren und nur die Zeilen drucken möchten, lesen Sie Zeile für Zeile mit std::getline und denken Sie daran, einen Zeilenumbruch zu drucken.

+0

können Sie es bitte mit Code erklären? –

1

Sie können den Code unten versuchen, eine Datei Zeile für Zeile zu lesen, wie es ist, oder mit endl statt ‚‘ im Code

ifstream myfile("book_inventory.txt"); 
string line; 
if (myfile.is_open()) 
{ 
    while (getline(myfile, line)) 
    { 
     cout << line << '\n'; 
    } 
    myfile.close(); 
} 
+0

versucht dies, aber die Ergebnisse sind immer noch –

+0

@NaveedKhan, wahrscheinlich ändern Sie Code nicht richtig, oder Wiederaufbau es gut. Anstatt zu posten, dass es nicht funktioniert, können Sie es bitte selbst ausprobieren? Es gibt definitiv etwas, das du vermisst. – Ajay

Verwandte Themen