2010-11-11 2 views
1

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

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

Мой текущий «резервный код» выглядит следующим образом:

fstream log; 
log.open ("log.txt"); 
if (log.is_open()) 
{... 
    ... 
    log.close(); 
} 

ответ

8

Открыть поток в дописывания режиме:

log.open("log.txt", fstream::app); 

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

Одно из предложений (если вы этого еще не делаете) заключается в включении какой-либо отметки времени в данные ведения журнала, так что, когда вы читаете файл, вы можете связать зарегистрированные данные с прогоном программы ,

+0

Спасибо за предложение. Я планирую сделать это в своей программе. Однако отправленный код не работает просто потому, что файл не открывается. Я установил условие - если файл не открыт, cout << 0. Написал 1 до этого, теперь моя командная строка полна нулей ... :( – Tom83B

3

log.open("log.txt", fstream::app) для присоединения к файлу.

Прочитать this ссылка для получения дополнительной информации.

Если вам нужен сложный механизм для ведения журнала и временная привязка, есть полезный SO post о фреймворках регистрации для C++. Pantheios получил принятый ответ.

+0

Я бы предпочел, если бы мне удался сам механизм регистрации - даже если немного (/ много) хуже. Кстати, я проверил ссылку и исходный код не работает ... Я скомпилировал его, и он не сработал. Когда я проверил его с помощью функции is_open(), он вернул 0 – Tom83B

0

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

ofstream log; 
log.open("log.txt", ofstream::app); 

Я думаю, работать с явным потоком

ifstream

и

ofstream

иногда работает лучше. Хотя я не знаю причины.

Смежные вопросы