Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Ob neue Zeile in Datei vorhanden ist

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
22.11.2004, 18:19 Uhr
A-l-e-x



Ich erweitere gerade mein Programm um weiter Funktionen. Klappt eigentlich ganz gut. Jetzt muss ich die neuen Werte auch noch speichern können. Das speichern an sich kann ich (mit fstream und ofstream). Ich muss aber eine alte sav-File einlesen und es als neue speichern. Die alte sav-File enthält weniger Werte als die neue. Jeder Wert ist in einer eigenen Zeile gespeichert. Jetzt muss ich beim Lesen überprüfen ob es weitere Zeilen gibt (wo Werte gespeichert sind) oder nicht. Wenn es mehr Zeilen gibt als beim altem sav-File, ist es ne neue Datei, wenn nicht, ist es ne alte. Jetzt könnte man überprüfen ob es eine weitere Zeile gibt oder man prüft die Anzahl der Zeilen. Leider kann ich keines von den zwei Möglichkeiten.

mfg A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.11.2004, 20:30 Uhr
Devil



Hm, also ich beheb das Problem in dem ich immer am anfang der Datei ne versionsnummer
anlege, und dann es so auslese:

C++:
int version;
i >> version;
switch(version)
{
  case 3://es gibt 3 Dateiversionen
/* lese die daten die in version 3 neu sind */
case 2:
/* lese die Daten die in version 2 neu sind */
case 1:
/* lese die daten der ursprungsversion */
}


Beim schreiben mach ich es dann so das ich natürlich nur noch version 3 Dateien erstelle.

Du könntest jetzt die Daten in einen vector einlesen, und danach dann entsprechend verarbeiten.


C++:
vector<string> Contents;              // Container für die einzelnen Zeilen

    // Solange kein Fehler auftritt und nicht eof
    for (string ReadString; getline(FileIn, ReadString); )        
        Contents.push_back(ReadString);   // Aktuelle Zeile in den Vektor einfügen

Jetzt steht der gesamte Inhalt im vector, jede Zeile hat einen eigenes element:
Content[0] ist die erste Zeile.
Jetzt musst du nur noch mittels .size() die Länge abfragen und entsprechend reagieren.

Devil
--
Intelligenz ist eine Illusion des Menschen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2004, 16:59 Uhr
A-l-e-x



Dummerweise hab ich in der alten sav-File keine Versionnummer... Aber du hast mich gerade auf eine Idee gebracht. Man braucht diese vectoren nicht mal. Man kann ja bei der ersten Zeile gucken, ob dort eine Versionsnummer steht. Die Zeile fängt z.B. mit 'v' an. Wenn ein 'v' vorhanden ist, ist das 'ne neue, wenn nicht, ist das 'ne alte. Später kann man es über Versionnummer prüfen.

mfg A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: