【问题标题】:How to append text to a text file in Qt?如何将文本附加到 Qt 中的文本文件?
【发布时间】:2018-08-12 23:25:46
【问题描述】:

我希望能够在现有文件的末尾附加文本。这意味着在向其中添加新文本时不应覆盖该文件。

这就是我在普通 C++ 中的做法:

ofstream fout("filename.txt", ios::app)  

这是我尝试使用 Qt 的方法,但它不起作用:

void addToDatabase::on_pushButton_clicked() {
    QString make = ui->lineEdit->text();
    QString model = ui->lineEdit_2->text();
    QString price = ui->lineEdit_3->text();
    QString miles = ui->lineEdit_4->text();

    QFile myDatabase(myDatabasePath);
    if (myDatabase.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
        QTextStream out(&myDatabase);
        out << make << "    " << model << "    " << price << "    " << miles << endl;
        myDatabase.flush();
        myDatabase.close();
    }
    this->close();
}

我注意到,当我尝试阅读我的 QFile 时,它也不起作用。我认为这是因为第 7 行的 myDatabase 声明覆盖了给定路径上的旧 database.txt 文件。

【问题讨论】:

  • 您提供的代码对我有用。在 if (myDatabase... 之后的 else 语句中显示调试消息,以确保文件确实正在打开。
  • 现在也适用于我,我在课堂上不小心复制了代码,没有附加参数。太糟糕了……浪费了三个小时。
  • 这就是为什么需要MCVE。很多时候,仅此一项就可以解决问题并消除发布任何内容的需要。
  • 另外,检查 IO 函数的返回值......许多“错误”(即使不是这个)只是权限错误、路径错误......

标签: c++ qt qfile


【解决方案1】:

在没有使用 append 参数的情况下,在这个函数之前不小心复制了代码。所以基本上该文件每次都会自行删除,然后调用这个我想附加到现在擦除的文件的新函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多