Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » tellg() verändert den Dateizeiger ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.06.2008, 11:04 Uhr
Kest
saint


Hi!


C++:
f.open("test.txt", ios::in|ios::binary);

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.06.2008, 12:05 Uhr
Kamor



Ja, danke. Zumindest eine Lösung für das Problem, hätte ich auch drauf kommen können. Hatte die Tage schon häufiger das Vergnügen mit Binary und Nicht-Binary.

Trotzdem ist mir die Sache mit to be binary oder to be not binary nicht so ganz geheuer. Vor allem die Aussage das ein tellg etwas verändern kann, ist mir in diesem Zusammenhang unerklärlich. Er soll doch nur einen Wert liefern? Dabei verändert er einen Ausgangswert für das nachfolgende getline?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: