2014-10-01 3 views
1

Код ниже делает текстовый файл с названием и записывает то, что было введено в командной строке на .txt. Проблема в том, что, как только я запустил код во второй раз, он стирает то, что было написано ранее, и записывает вновь введенные данные. Если текстовый файл уже существует, я хочу сохранить написанное ранее, спрыгнуть на две строки и добавить новый материал. Есть идеи?C++ Добавить строку в существующий текстовый файл

#include <iostream> 
#include <fstream> 
#include <string> 
#include <ctime> 

void main() 
{ 
    time_t now = time(0); 
    tm *ltm = localtime(&now); 
    int day = ltm->tm_mday; 
    int month = 1 + ltm->tm_mon; 
    int year = 1900 + ltm->tm_year; 
    std::string d = std::to_string(day); 
    std::string m = std::to_string(month); 
    std::string y = std::to_string(year); 
    std::string info; 
    std::getline (std::cin, info); 
    std::ofstream notes(m + d + y + ".txt", std::ios::out); 
    if (notes.is_open()) 
    { 
     notes << info; 
    } 
    else 
    { 
     std::cout << "couldn't make file"; 
    } 
} 
+0

http: // www. cplusplus.com/reference/fstream/ofstream/ofstream/ –

+1

['std :: ios :: app'] (http://en.cppreference.com/w/cpp/io/ios_base/openmode) –

+0

Работал отлично! Любая идея, как удалить адреса, которые будут написаны? –

ответ

2

Меняйте

std::ofstream notes(m + d + y + ".txt", std::ios::out); 

Для

std::ofstream notes(m + d + y + ".txt", std::ios::app); 

Таким образом, вы будете добавлять новые строки в конце файла

Для получения дополнительной информации о режимах записи: Check this link

+0

Вот и все! Спасибо! –

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