Penso che questo dovrebbe essere abbastanza semplice, ma il mio googling non ha aiutato finora ... Ho bisogno di scrivere su un file esistente in C++, ma non necessariamente alla fine del file.Come scrivere a metà di un file in C++?
So che quando voglio solo aggiungere del testo al mio file, posso passare la bandiera ios:app
quando si chiama open
sul mio oggetto flusso. Tuttavia, questo solo mi permette di scrivere alla fine del file, ma non nel suo mezzo.
Ho fatto un breve programma per illustrare il problema:
#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();
}
È possibile che si desideri utilizzare una libreria di file indicizzata (come [GDBM] (http://www.gnu.org.ua/software/gdbm/)) o [sqlite] (http://sqlite.org/) , o anche un database completo ([PostgreSQL] (http://postgresql.org/), [MongoDB] (http://mongodb.org/) ....) –
Modi standard di modifica dei file: leggi input file, elaborare, scrivere su un nuovo file di output, quando è riuscito, sovrascrivere il file di input con il file di output. Ci sono alternative "più veloci" (come ios :: app), ma non lo sono per ogni situazione. – stefaanv
Non è già stato chiesto qui come un milione di volte? –