C++ Datei auslesen
-
Folgendes Problem ich soll aus einer Datei (.txt)
eine bestimmte Zeile auslesen und in ein array speichernhab zwar schon google befragt aber irgendwie fühl ich mich nicht schlauer.....
für C hab ich was gefunden
http://openbook.galileocomputing.de/c_von_a_bis_z/016_c_ein_ausgabe_funktionen_016.htm#mjcea47bd6d32a4a8f51be329a672845d7muss es aber in C++ programmieren.
z.B.
test.txt
sadfs
sdfsg
sg
sd
gsgdsgh
gk
gk
kalso gib mir zeile 3 aus => sg
danke im voraus
-
Und wie lautet dein bisheriger Ansatz?
Irgendwas wirst du ja sicherlich schon programmiert haben?
Datei öffnen - irgendwas auslesen etc.
-
google ma nach ifstream
-
bisheriger ansatz war folgender der gibt mir aber alles wieder ......
// Zeilenweise Auslesen void lineOutput ( ifstream& stream ) { char buffer[512]; int cnt=1; while( stream.getline( buffer, sizeof(buffer)) ) { if( stream.fail() ) { cout << "Unerwarteter Lesefehler!" << endl; break; } cout << cnt++ << " : " << buffer << endl; } cout << endl; }
-
Da du in jedem Schleifendurchgang die gelesene Zeile ausgibst ist es klar, dass du den gesamten Dateiinhalt siehst.
Du bräuchtest also eine Zählvariable, die bei jedem Durchlauf um eins erhöht wird. Diese repräsentiert dann die bereits gelesenen Zeilen.Dann wäre es hilfreich, wenn die Funktion einen weiteren Parameter erhält. Du möchtest ja angeben, welche Zeile du auslesen möchtest.
Innerhalb der Schleife wird dann deine Zählvariable mit dem übergebenen Argument verglichen.Beispielsweise:
std::string lineOutput (std::istream& stream, int linenumber) { if (linenumber < 1) return "Ungueltige Zeilennummer"; std::string line; for (int actualline = 0; stream && actualline!=linenumber; ++actualline) std::getline(stream,line); return stream ? line : "Ungueltige Zeilennummer"; }Hier wird übrigens getline aus dem string-header verwendet, da ich ungern mit char-buffern arbeite wenn es nicht notwendig ist (somit ist es egal wie lang die Zeilen sind).
P.S. natürlich kannst du auch eine while schleife verwenden. Dann allerdings nicht vergessen innerhalb der Schleife die Zählvariable zu inkrementieren.
-
Wie willst du auf den Ansatz gekommen sein, wenn du jetzt nicht mal in if hinbekommst?