Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zeilen in Textdatei ändern

Empfohlene Antworten

Veröffentlicht

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.

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.

Danke für deine Antwort.

Was gäbe es denn für Möglichkeiten noch, die Zeilen zu ändern?

Und eine zeile einfügen und die alte löschen kann ich auch nicht?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.