Datei positionszeiger verschieben
-
Hi,
in meinem Programm habe ich eine Datei geöffnet mit einem ifstream Objekt und möchte mit dem Positionszeiger an eine bestimmte Stelle springen, z.B. an den anfang von der nächsten zeile, oder in die zeile 7, vor das 3. Zeichen.
Mfg Yazoo
-
Lesezeiger: http://cplusplus.com/reference/iostream/istream/seekg.html
Schreibzeiger(kannste mit ifstream aber nicht verwenden): http://cplusplus.com/reference/iostream/ostream/seekp.html
-
Hallo Yazoo,
mit seekg musst Du genau die Anzahl der Zeichen in einer Zeile kennen. Alternativ kann man das mit ignore erreichen - zum Beispiel:
#include <fstream> #include <limits> #include <iostream> int main() { using namespace std; ifstream in("input.txt"); for( int zl = 0; zl < 6; ++zl ) // 6 Zeilen überspringen in.ignore( numeric_limits< streamsize >::max(), '\n' ); in.ignore( 2 ); // weitere 2 Zeichen überlesen // Lesezeiger sollte jetzt in der 7.Zeile vor dem 3.Zeichen stehen ... ... return 0; }:xmas2: Werner
-
wie is das wenn ich so in eine integer einlese:
ifstream data("test.txt"); int test, test2; data >> test; data >> test2; cout << test << endl << test2;test.txt:
5938 738gebit er dann
5938
738
aus?und wenn test.txt so ist?:
5938 738gibt er dann auch
5938
738
aus???
-
Ja - und ja. (für den operator>> ist es egal, was zwischen den Nutzdaten steht, alle Whitespaces werden auf dem Weg ignoriert und nur als Trennzeichen zwischen den Daten interpretiert.