Zum Inhalt springen

Zeilen in Textdatei ändern


Lemieux

Empfohlene Beiträge

Hallo, ich habe da ein kleiner Code, der mir in einer Textdatei einzelne Zeilen ändern sollte. Ich hatte das gleiche in einem anderen Forum hineingestellt, aber leider konnte mir niemand wirklich helfen. Ich stelle es mal hier hinein und hoffe dass mir jemand helfen kann.


#include <iostream>
#include <fstream>
#include <string>
#include <limits>

int main()
{
std::fstream file_stream("Ablage.txt", std::ios_base::in | std::ios_base::out);
if (!file_stream)
{
std::cerr << "FEHLER: Datei konnte nicht geöffnet werden!";
return 1;
}

for (std::size_t i(0); i < 3; ++i)
file_stream.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

std::string new_line;
if (std::getline(std::cin, new_line)) file_stream << new_line << std::endl;
}
[/PHP]

'i' ist hier die zeile, in der der text geändert werden sollte. Leider zeigt es mir keinen Fehler an, aber es ändert mir auch nicht die zeile in der textdatei.

Besten Dank.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider zeigt es mir keinen Fehler an, aber es ändert mir auch nicht die zeile in der textdatei.

Das könnte natürlich grundsätzlich daran liegen, dass du denselben String, den du ausliest, auch wieder hineinschreibst.

Zwei Dinge solltest du noch bedenken: Die Lese- und Schreibposition werden getrennt verwaltet, siehe seekp und seekg. Außerdem kannst du eigentlich gar nicht "ersetzen", sondern immer nur überschreiben. Die neue Zeile muss also dieselbe Länge haben wie die alte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Daten in einer Datei sind nicht nach Zeilen organisiert, sondern nach Bytes. Du kannst nichts einfügen, weil dazu alle Bytes hinter der Eingabeposition nach hinten verschoben werden müssten, und so etwas geben Dateisysteme nicht her.

Der triviale Ansatz ist der, die geänderten Daten komplett in eine neue Datei zu schreiben, die alte Datei zu löschen und dann die neue umzubenennen.

Alternativ kannst du eine Datenbank benutzen. Damit kannst du eine Abstraktionsschicht um deine Daten legen, so dass du nicht mehr mit rohen Bytes arbeiten musst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...