Я думаю, что это должно быть довольно просто, но мой поиск в Google не помог до сих пор ... Мне нужно написать существующий файл на C++, но не обязательно в конце файла.Как написать в середине файла в C++?
Я знаю, что когда я просто хочу добавить текст в свой файл, я могу передать флаг ios:app
при вызове open
на свой объект stream. Тем не менее, это только позвольте мне писать до самого конца файла, но не в его середине.
Я сделал короткую программу, чтобы проиллюстрировать этот вопрос:
#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();
}
Возможно, вы захотите использовать индексированную библиотеку файлов (например, [GDBM] (http://www.gnu.org.ua/software/gdbm/)) или [sqlite] (http://sqlite.org/) , или даже полноценная база данных ([PostgreSQL] (http://postgresql.org/), [MongoDB] (http://mongodb.org/) ....) –
Стандартный способ изменения файлов: чтение ввода файл, процесс, запись в новый выходной файл, когда это удалось, перезаписать входной файл с выходным файлом. Существуют «более быстрые» альтернативы (например, ios :: app), но они не для каждой ситуации. – stefaanv
Разве это уже не спрашивали здесь миллион раз? –