2016-08-29 1 views
0

Ich muß von Datei Zeile für Zeile lesen und es auf dem Bildschirm drucken:Lesen aus Datei Zeile für Zeile

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    ofstream out("note.txt"); 
    for (int i = 0; i < 10; i++) 
     out << i << " " << (i<<1) << "\n"; 
    out.close(); 


    ifstream fin; 
    fin.open("note.txt"); 

    string line; 
    for (int i = 0; i < 10; ++i) 
    { 
     getline(fin, line); 
     cout << line << "\n"; 
    } 
    return 0; 
} 

Ist dieser Ansatz richtig? Kann ich es ohne eine String-Variable (ohne String Zeile im Code) tun?

+0

_ „? Cant ich es ohne ein String-Variable (ohne Code-String-Linie)“ _ Könnten Sie erklären weiter, warum Sie Wollen Sie das wirklich? –

+0

_ist dieser Ansatz korrekt? _ Art von Fragen sind besser geeignet für [codereview.stackexchange.com] (http://codereview.stackexchange.com/). Aber zu Ihrer zweiten Frage: Wo wollen Sie die Variable zu, wenn nicht zu einer Variablen lesen? –

+0

@ AlgirdasPreidžius direkt auf den Bildschirm. – samjoe

Antwort

3

Statt einer for-Schleife verwenden können Sie eine while-Schleife verwenden:

#include<iostream> 
#include<string> 
#include<fstream> 

using namespace std; 

int main() { 

    string line; 
    ifstream out("note.txt"); 
    while(getline(out, line)) { 
     cout << line << endl; 
    } 
    out.close() 
} 

Wenn Sie gezwungen sind, keine Strings zu verwenden, dann können Sie einen char buffer char buf[1024] versuchen. Es muss darauf hingewiesen werden, dass dieser Ansatz gefährlich und fehleranfällig ist. Wenn eine Zeile mehr als 1024 Zeichen enthält, wird eine buffer overflow auftreten. Pufferüberlauf ist die Ursache für viele vulnerabilities und crashes. Wenn Sie diese Methode wirklich anwenden müssen, würde ich Ihnen empfehlen, sehr vorsichtig zu sein, indem Sie die entsprechenden Überprüfungen durchführen.

+0

So einfach :) guten Tag! –

+0

Schließen Sie die Datei nach der Verwendung – rawjean

+0

eine feste Größe Puffer ist eine wirklich schlechte Idee Kostas. –

3

eine Datei wörtlich Kopieren ist ein einfacher als Strompuffer ausströmenden:

ifstream fin; 
fin.open("note.txt"); 

std::cout << fin.rdbuf(); 
Verwandte Themen