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





  • 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.


Anmelden zum Antworten