gpt4 book ai didi

c++ - QTextStream 无法使用 openmode QIODevice::Append 写入包含 "\t"的文件

转载 作者:行者123 更新时间:2023-11-28 04:43:17 24 4
gpt4 key购买 nike

我尝试使用 QTextStream 将一些信息保存到文本文件中。代码如下:

QFile fi(QString("result.txt"));
fi.remove();
if(!fi.open(QIODevice::Append)) {
qDebug()<<"Cannot open file!";
return -1;
}

QTextStream ts(&fi);
float num = 1, error = 2;
ts<<"num="<<num<<"\t"<<"error="<<error<<endl;

但是,代码不起作用。文件已创建,但未写入任何内容,即文件为空。

经过一些研究,我发现我应该将打开模式更改为QIODevice::Text | QIODevice::Append 使代码工作。否则必须删除“\t”字符。这是否意味着 QIODevice::Text 是专门为“\t”等特殊字符设计的,可以写入文件?

最佳答案

我无法重现。以下内容在 Windows、OS X 和 Linux 上完美运行,带有 Qt 5.9。请修复您的示例,使其完整并且可重现。例如。采取下面的代码,并使其失败。

// https://github.com/KubaO/stackoverflown/tree/master/questions/stream-49779857
#include <QtCore>

QByteArray readAll(const QString &fileName) {
QFile f(fileName);
if (f.open(QIODevice::ReadOnly))
return f.readAll();
return {};
}

int main() {
auto tmp = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
auto fileName = QStringLiteral("%1/com.stackoverflow.questions.49779857-result.txt")
.arg(tmp);
QFile file(fileName);
file.remove();
if (!file.open(QIODevice::Append))
qFatal("Cannot open file!");

QTextStream ts(&file);
auto num = 1.0f, error = 2.0f;
ts << "num=" << num << "\t" << "error=" << error << endl;
file.close();

Q_ASSERT(file.exists());
Q_ASSERT(readAll(fileName) == "num=1\terror=2\n");
}

关于c++ - QTextStream 无法使用 openmode QIODevice::Append 写入包含 "\t"的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com