daTom Geschrieben 29. August 2007 Geschrieben 29. August 2007 Hallo, ich lese eine Datei(xml) mit Hilfe von ifstream ein und gucke ob ein bestimmter Eintrag vorhanden ist. Wenn dieser Eintrag nicht vorhanden ist, soll mein Programm Einträge an einer bestimmten Stelle in der Datei machen. Ich habe leider kaum einen Ansatz, wie ich das lösen soll. Die Klasse ostream bietet ja die Funktion seekp an, mit der man anscheinend den Stream an eine bestimmte Stelle bringen kann. Der Funktion kann ich aber nur einen pos_type übergeben. Gibt es eine Möglichkeit, dass ich nach einem bestimmten Tag suchen kann (z.B. nach </irgendwas>) und mir dann den pos_type dazu geben lassen kann, damit ich dort meinen Eintrag vornehmen kann? Gruß
Klotzkopp Geschrieben 29. August 2007 Geschrieben 29. August 2007 Der Funktion kann ich aber nur einen pos_type übergeben.Das ist aber mit Sicherheit nur ein typedef für eine eingebauten vorzeichenlosen Datentyp. Da kannst du also vermutlich ohne Probleme einen unsigned int o.ä. verwenden. Nachtrag: Ich hoffe, dir ist klar, dass du nichts einfügen kannst. Wenn du an einer bestimmten Stelle in die Datei schreibst, überschreibst du das, was da steht.
Guybrush Threepwood Geschrieben 29. August 2007 Geschrieben 29. August 2007 Trotzdem kannst du aber nicht einfach mit in der Datei etwas einfügen, weil du so einfach einen Teil überschreiben würdest.
break Geschrieben 29. August 2007 Geschrieben 29. August 2007 Hallo, muss es ifstream sein? Wenn Du da mehr Freiheit hast, kannst auch mit CFile arbeiten, oder? Dann liest alles in ein CString rein,und diesen kannst dann manipulieren wenn nötig, und als Ergebnis wieder in die Datei zurück schreiben! Und CString bringt auch eigene Funktionen zum suchen mit, wie: CString::Find("</irgendwas>");, kommt darauf an wie Du es machen musst oder möchtest!? LG break
Klotzkopp Geschrieben 29. August 2007 Geschrieben 29. August 2007 @break: Was du da beschreibst, geht genauso auch mit std::ifstream und std::string. Das Grundproblem bleibt, dass man in Dateien nicht direkt etwas einfügen kann. Man muss den Inhalt in den Speicher holen, dort bearbeiten und wieder speichern.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden