Funktion zum ändern von Daten in einer Datei
-
Hallo,
ich versuche derzeit folgende Funktion zu schreiben.
int ChangeData(const char* filename,string data){ string buf; string line; fstream in(filename, fstream::in | fstream::out); while(getline(in,line)) buf += line; size_t blubb = buf.find(data); if(blubb != string::npos){ // Die richtige Stelle finden size_t abg1 = buf.find('"') // Von dieser Stelle aus das nächste " ... " suchen size_t abg2 = buf.find('"') // Alles zwischen " ... " löschen // Neue Zahl zwischen " ... " einfügen in.seekg(0); // Datei mit dem neu einfügten Wert speichern in.write(buf.c_str(), buf.length()); in.close(); return 1; } }Nur leider komme ich hier an einer entscheidenen Stelle nicht weiter. Mir ist nicht ganz klar, wie ich von einer bestimmten Zeilenposition das nächste '"' suchen kann usw.
Im Endeffekt hatte ich mir das Programm so vorgestellt:
-Es wird nach einem vorgegebnen string gesucht
-Sobald string gefunden müssten die Positonen der folgenden beiden '"' bestimmt werden
-Position vom 2. '"' - Postion vom 1. '"' ergibt die zu löschenden chars
-Nach Position 1. wird nun eine neue double Zahl eingefügt.
-Datei speichern, schließen und fertig
-
Brauchst Du diese Infos?
http://www.cplusplus.com/reference/string/string/
-
du könntest die Datei auch einfach am anfang in eine vector<char> einlesen, dann da deine sachen einfügen und dann den vector komplett in ne neue datei schreiben.
-
Nur leider komme ich hier an einer entscheidenen Stelle nicht weiter. Mir ist nicht ganz klar, wie ich von einer bestimmten Zeilenposition das nächste '"' suchen kann usw.
Keiner der Befehle hier hat mir weitergeholfen: http://www.cplusplus.com/reference/string/string/
Wir haben ja den Befehl "find" über diesen finde ich das erste '"', so nun möchte ich jedoch auch das 2. '"' finden. Wie sage ich nun dem Befehl "find", dass er nicht wieder vom Anfang des strings suchen soll, sondern ab der Stelle vom 1. '"'.
-
Schau mal hier: http://www.cplusplus.com/reference/string/string/find/
Tip: da werden 4 verschiedene Überladungen beschrieben, alle haben einen Parameter namens "pos". Schau mal, wozu der gut sein könnte, und überleg dir, was du beim zweiten Suchen dort übergeben könntest.