如何在 QTextstream 的开头写一个新行?
我正在向后追踪二叉树并将结果写入日志文件。我希望根节点成为列表中的第一行。简单地附加行会导致相反的顺序。我需要做的是在文件顶部添加新行。
这是我得到的一个简化示例:
QFile mFile("fileName.csv");
QTextStream out(&mFile);
if (!mFile.open(QFile::WriteOnly | QFile::Text)){
qDebug() << " Could not open foundPath file";
return;
}
int cursor = 10;
while (cursor > 0){
out << cursor << "\n";
cursor--;
}
结果明明是10, 9, ... , 1,但我要的是1, 2, ..., 10。
最佳答案
你不能覆盖“第一行”,因为文件不是按行存储的,而是一个字节接一个字节地存储;换行符没有什么特别之处。因此,如果您用更长的行替换文件的第一行,您将覆盖第二行的部分内容,例如。
您可以读取整个文件,并在重写其余部分之前添加第一行,但是一旦您的日志文件变大,这将非常缓慢并且资源密集。
正确的方法显然是反转显示,而不是日志。
关于c++ - Qt - 在文件开头重复写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30704350/