Текстовый файл C ++: запись в конец определенной строки

Я пытаюсь создать программу, в которой я могу записать строку в конец определенной строки в текстовом файле.

Например, это текстовый файл с несколькими случайными числами:

12 23
53 23

А что если у меня есть программа, которая добавляет еще одно двузначное число в конец первой строки (или любую указанную строку), имея в виду, что строка будет расширяться, если я продолжу запускать программу снова.

Поэтому после запуска программы текстовый файл будет выглядеть примерно так:

12 23 34
53 23

Какие есть способы решить эту проблему?

0

Решение

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

Если ваш файл не очень большой, лучше всего загрузить его в память, изменить данные в памяти, а затем создать новый файл для сохранения результатов. (Вы можете сохранить в тот же файл, если это необходимо.)

Другие алгоритмы включают использование блоков фиксированного размера, наличие связанного списка в вашем файле, но звучит так, будто вы хотите, чтобы ваш файл был обычным текстом, и поэтому они, вероятно, не будут работать.

2

Другие решения

Вы никогда не должны пытаться редактировать текстовый файл на месте. Наиболее распространенный способ — записать отредактированный файл во временную папку и в конце переименовать его в старое имя (после удаления исходного файла).

Другой способ (при условии, что файл достаточно мал) загружать все в памяти и переписывать файл с самого начала. Но никогда не делайте этого с конфиденциальными файлами, потому что если ваша программа (или ваш компьютер или электроэнергия) падает в середине, ваш файл будет окончательно потерян.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector