【发布时间】: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 函数的返回值......许多“错误”(即使不是这个)只是权限错误、路径错误......