写入 QTextStream
Writing to QTextStream
这段代码完成后,我的 QTextStream 为空:
QString line1 = "This is line one";
QString line2 = "This is line two";
QString line3 = "This is line three";
QString outputFilename = "temp.txt";
QFile outputFile(outputFilename);
outputFile.open(QIODevice::WriteOnly);
outputFile.open(QIODevice::ReadWrite); // This fixes the problem
QTextStream out1(&outputFile);
out1 << line1 << endl;
out1 << line2 << endl;
out1 << line3 << endl;
outputFile.flush();
QString temp = out1.readAll();
mainclipboard->setText(temp);
outputFile.close();
这里,QString temp 是空的。我错过了什么?
感谢海德的回答
您以只写方式打开支持 QTextStream
的文件,因此仅出于这个原因读取就应该失败。只需更改打开模式即可。
还要考虑您正在读取的文件中的位置...使用 pos()
方法检查它,它应该告诉您文件位置是写入结束的位置。所以在阅读之前 seek()
。
由于您是在单个 QTextStream
上操作,因此不需要冲洗。如果您有单独的对象用于读取和写入,那么您需要刷新以确保数据写入 OS(刷新 QTextStream
,这也会刷新文件,如 [=15 中所述) =]).
这段代码完成后,我的 QTextStream 为空:
QString line1 = "This is line one";
QString line2 = "This is line two";
QString line3 = "This is line three";
QString outputFilename = "temp.txt";
QFile outputFile(outputFilename);
outputFile.open(QIODevice::WriteOnly);
outputFile.open(QIODevice::ReadWrite); // This fixes the problem
QTextStream out1(&outputFile);
out1 << line1 << endl;
out1 << line2 << endl;
out1 << line3 << endl;
outputFile.flush();
QString temp = out1.readAll();
mainclipboard->setText(temp);
outputFile.close();
这里,QString temp 是空的。我错过了什么?
感谢海德的回答
您以只写方式打开支持 QTextStream
的文件,因此仅出于这个原因读取就应该失败。只需更改打开模式即可。
还要考虑您正在读取的文件中的位置...使用 pos()
方法检查它,它应该告诉您文件位置是写入结束的位置。所以在阅读之前 seek()
。
由于您是在单个 QTextStream
上操作,因此不需要冲洗。如果您有单独的对象用于读取和写入,那么您需要刷新以确保数据写入 OS(刷新 QTextStream
,这也会刷新文件,如 [=15 中所述) =]).