Как мне записать в следующую строку файла .csv после того, как пользователь ввел значения без перезаписи предыдущих значений? - PullRequest
2 голосов
/ 08 апреля 2019

Это мой первый пост на stackoverflow, поэтому я прошу прощения, если я что-то делаю неправильно.

Я создаю эту программу, где студенты могут смахивать свою карточку, и она предложит им ввести свое имя.Когда они закончат, программа запишет все в файл CSV.Моя проблема в том, что записи перезаписываются последней введенной записью.Есть ли способ для программы записать все записи в файл csv без перезаписи последней записи?

Это функция, которую я использую для записи записей в файл csv.

void firstTimeDialog::on_buttonBox_clicked(QAbstractButton *button)
{
    QFile studentLogIn("studentLogin.csv");
    QTextStream write(&studentLogIn);

    if(!studentLogIn.open(QFile::WriteOnly | QFile::Text))
    {
        QMessageBox::warning(this, "title", "studentLogIn.csv isn't open");
    }

    write << getIDNumber() << ", " << getName() << endl;
}

Функции getIDNumber () и getName () возвращают только идентификационный номер студента и его имя.

Если бы я открыл файл CSV, я ожидал, что он покажет: (Использование запятых для обозначения следующей ячейки файла CSV)

12345678, Джон Доу

87654321, Фрэнк Доу

01234556, Боб Доу

Вместо этого он показывает мне последнюю запись, которая будет

01234556Боб Доу

1 Ответ

0 голосов
/ 09 апреля 2019

Вы должны использовать флаг QIODevice::Append, чтобы он записывался в конец файла:

if(!studentLogIn.open(QFile::WriteOnly | QFile::Text | QFile::Append))
...