Wie lösche ich eine Zeile einer csv Datei oder besser: Wie überschreibe ich ein Arrayfeld?



  • Guten Abend,

    ich lerne im Moment das Programmieren mit C++.
    Kann mir jemand erklären, wie ich eine Zeile einer csv Datei überschreibe/lösche?

    struct StrukturDaten
    {
          string      DataEins;
          string      DataZwei;
          int         DataDrei;
          double      DataVier;
    };
    
    struct StrukturAlleDaten
    {
          StrukturD daten[1000];
          const int maxDaten;
          int Anzahlfelder;
          StrukturAlleDaten() : Anzahlfelder(0), maxDaten(100) {};
    };
    
    int ueberschreibeEinDatensatz( StrukturDatens & alleDaten )
    {
    
          for ( int i = 0; i < alleDaten.Anzahlfelder; i++ )
          {
    	 alleDaten[i+1];
          }
         alleDaten[alleDaten.Anzahlfelder-1] = StrukturDaten();
          return 0;
    }
    

  • Mod

    Dateien sind strukturlose Zeichenfolgen. Die Interpretation mit Zeilen, Datenfeldern und so weiter ist rein auf der Ebene des Programms, dass eine Datei verarbeitet. Das heisst, du kannst zwar bestimmte Zeichen in einer Datei ueberschreiben oder an die Datei anhaengen, aber du kannst keine Zeichen einfuegen oder entfernen. Und alles was irgendwie mit Zeilen oder Spalten zu tun hat, muss sich dein Programm selber ausrechnen, welche Zeichen das betrifft, denn die Datei kennt nur Zeichen.
    Letztlich ist es also nicht wirklich moeglich, was du vor hast, ausser es ist machbar durch das Ueberschreiben von Zeichen, die schon da sind, oder durch Anhaengen am Ende.

    Moeglichkeiten:
    -Datei komplett mit neuem Inhalt ueberschreiben
    -Verbesserung: Neue Datei komplett schreiben. Erst dann, wenn man sicher ist, dass dies erfolgreich geschehen ist, der neuen Datei den Namen der alten geben.
    -Sich ein anderes Dateiformat ausdenken, dass es zulaesst, auch mit den beschraenkten Moeglichkeiten Aenderungen am logischen Inhalt der Datei vorzunehmen. Zum Beispiel indem man hinten Information anhaengt, was wo wie geaendert wurde, anstatt das Ergebnis dieser Aenderungen zu speichern.


Log in to reply