Как переписать только часть файла в c ++ - PullRequest
8 голосов
/ 27 марта 2010

Я хочу внести изменения в середину текстового файла, используя c ++, не изменяя остальную часть файла. Как я могу это сделать?

Ответы [ 3 ]

14 голосов
/ 18 января 2012

Использование std :: fstream .

Более простой std :: ofstream не будет работать. Это усечет ваш файл (если вы не используете опцию std :: ios_base :: app, а это не то, что вам нужно).

std::fstream s(my_file_path); // use option std::ios_base::binary if necessary
s.seekp(position_of_data_to_overwrite, std::ios_base::beg);
s.write(my_data, size_of_data_to_overwrite);
8 голосов
/ 27 марта 2010

Если строка замены имеет одинаковую длину, вы можете внести изменения на месте. Если замещающая строка короче, вы можете заполнить ее пробелами нулевой ширины или подобными, чтобы сделать это равным числу байтов, и внести изменения на месте. Если строка замены длиннее, места недостаточно, если вы сначала не переместите все оставшиеся данные.

0 голосов
/ 27 марта 2010

Как правило, открывайте файл для чтения в текстовом режиме, читайте строку за строкой до места, которое вы хотите изменить, читая строки, запишите их во второй текстовый файл, который вы открыли для записи. На месте изменений запишите во второй файл новые данные. Затем продолжите чтение / запись файла до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...