000
18.06.2008, 10:44 Uhr
Kamor
|
Normalerweise dachte ich, das tellg() eine einfacher Readwert ist, der mir den derzeitigen Positionswert im Stream liefert, aber irgendwie hat der tellg() wohl doch ein Eigenleben? Habe dazu mal ein Beispiel gekürzt.
Code: |
#include <cstdlib> #include <iostream> #include <fstream>
using namespace std;
int main() {
fstream f;
char buffer[1000]; int unwichtig;
f.open("test.txt", ios::out | ios::trunc); f.write("text1\n",strlen("text1\n")); f.write("text2\n",strlen("text2\n")); f.write("text3\n",strlen("text3\n")); f.close();
f.open("test.txt", ios::in ); f.getline(buffer, 1000); cout << buffer << endl;
unwichtig=f.tellg(); // f.seekg(unwichtig-2,ios::beg);
f.getline(buffer, 1000); cout << buffer << endl; f.getline(buffer, 1000); cout << buffer << endl; f.close(); system("PAUSE"); return EXIT_SUCCESS; }
|
Die Zeile unwichtig=f.tellg(); verstellt mir den Zeiger in der Datei, so das der getline nicht mehr sauber greift. Ich müsste den Zeiger in diesem Beispiel vorher noch um 2 zurücksetzen.
Meine Vermutung ist, das die 2 Zeichen das LineFeed und Carriage Return sind, nur erklärt es beim besten Willen nicht, wieso eine Funktion, die nur einen Wert liefern soll, diesen für den nachfolgenden getline verstellt? |