Ich denke, das sollte ziemlich einfach sein, aber mein googling hat bisher nicht geholfen ... Ich muss in eine vorhandene Datei in C++ schreiben, aber nicht unbedingt am Ende der Datei.Wie schreibe ich in die Mitte einer Datei in C++?
Ich weiß, dass, wenn ich will nur Text zu meiner Datei anhängen, ich die Fahne ios:app
passieren kann, wenn open
auf meinem Stream-Objekt aufrufen. Allerdings schreibe ich nur bis zum Ende der Datei, aber nicht in die Mitte.
machte ich ein kurzes Programm, das Problem zu veranschaulichen:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string path = "../test.csv";
fstream file;
file.open(path); // ios::in and ios::out by default
const int rows = 100;
for (int i = 0; i < rows; i++) {
file << i << "\n";
}
string line;
while (getline(file, line)) {
cout << "line: " << line << endl; // here I would like to append more text to certain rows
}
file.close();
}
Sie können eine indizierte Datei-Bibliothek (wie [GDBM] (http://www.gnu.org.ua/software/gdbm/)) oder [SQLite] (http://sqlite.org/) verwenden möchten, oder sogar eine vollwertige Datenbank ([PostgreSQL] (http://postgresql.org/), [MongoDB] (http://mongodb.org/) ....) –
Standard-Weg zum Ändern von Dateien: Eingabe lesen Datei, Prozess, Schreiben in neue Ausgabedatei, überschreibt, wenn erfolgreich, Eingabedatei mit Ausgabedatei. Es gibt "schnellere" Alternativen (wie ios :: app), aber sie sind nicht für jede Situation geeignet. – stefaanv
Wurde das hier nicht schon millionenfach gefragt? –