用户输入值后,如何覆盖.csv文件的下一行,而先前的值不会被覆盖?

时间:2019-04-08 20:57:33

标签: c++ qt c++11 qt5

这是我关于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()函数仅返回学生的ID号和学生的姓名。

如果我要打开csv文件,则希望它显示: (使用逗号指示csv文件的下一个单元格)

  

12345678,约翰·多伊(John Doe)

     

87654321,弗兰克·杜(Frank Doe)

     

01234556,鲍勃·杜(Bob Doe)

相反,它向我显示了最后一个条目,即

  

01234556,鲍勃·杜(Bob Doe)

1 个答案:

答案 0 :(得分:0)

您必须使用标志QIODevice::Append才能将其写入文件末尾:

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