我对 stackoverflow 还是很陌生,所以如果我做错了什么,我深表歉意。我有一个不断更新的 csv 文件,但我希望能够选择将字符串添加到特定行的末尾。我有一种方法能够找到我想要将字符串附加到的行,但我不确定如何将该字符串添加到该行的末尾而不在 csv 文件的底部创建新行。
'''
QFile listOfStudents("listOfStudents.csv");
QTextStream read(&listOfStudents), write(&listOfStudents;
QStringList studentInformation;
QString junkLine = read.readLine(), line, studentLine,
appendingString = "Ralph Emerson";
if(!listOfStudents.open(QFile::ReadWrite | QFile::Text))
{
QMessageBox::warning(this, "title", "not open!");
}
while(!read.atEnd())
{
line = read.readLine();
if(line.contains(IDNumber, Qt::CaseSensitive))
{
studentLine = line;
studentLine += ", ";
studentLine += appendingString;
line.clear();
write << studentLine;
break;
}
}
'''
如果 studentLine 是
12345678,加里·鲍勃,肯尼迪·约翰逊我想附加字符串“Ralph Emerson”, 预期的结果是
12345678,加里·鲍勃,肯尼迪·约翰逊,拉尔夫·爱默生”但是,上面的代码只会将更新后的 studentLine 附加到文件的底部,而不是更改它最初在文件中所在的行。
最佳答案
文件通常是连续的、有界的字节流。因此,如果你想写在一个中间,你就必须把剩下的全部向前移动,为新的腾出空间。
如果您的文件足够小,一个简单的解决方案是完全解析它们,将它们作为数据结构保存在内存中,修改它,然后将其转储回来。
然而,最高效的解决方案是在读取文件时写入一个新文件,然后在到达插入点时添加新文件,然后继续将文件的其余部分复制到输出中。
关于c++ - 我可以将字符串附加到文件的特定行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695377/