Как сохранить все данные в файле? C ++ - PullRequest
1 голос
/ 15 октября 2019

У меня проблема, я хочу сохранить все идентификационные номера в текстовом файле, но он сохраняет только последний идентификационный номер, введенный пользователем.

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{

    string line;
    int idnum;
    ofstream IdData ("data.txt");

    cout<<" Enter your ID number: "<<endl;
    cin>>idnum;

    if(IdData.is_open())
    {
        IdData<< "ID number of voter is: ";
        IdData << idnum << endl;
        IdData.close();
    }
    else 
        cout<<" Unable to open file";


    ifstream Data ("data.txt");

    if(Data.is_open())
    {
        while (getline (Data, line))
        {
            cout<< line << endl;
        }

        Data.close();
    }
    else
        cout<<" Unable to open file";
}

1 Ответ

0 голосов
/ 15 октября 2019

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

std::ofstream уничтожает содержимоесуществующий файл, если вы явно не просите его не делать этого. Итак, для того, что вы пытаетесь сделать, чтобы добавить новый идентификатор в конец существующего файла, вам необходимо включить флаг app или ate при открытии std::ofstream (см. C ++ Обработка файлов: разница между ios :: app и ios :: ate? ), например:

ofstream IdData ("data.txt", ios::app);

Или:

ofstream IdData ("data.txt", ios::ate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...