C++ 我是否可以将字符串附加到文件的特定行?

C++ 我是否可以将字符串附加到文件的特定行?,c++,qt,C++,Qt,我对stackoverflow还是一个新手,所以如果有什么我做得不对的地方,我很抱歉。我有一个不断更新的csv文件,但我希望能够选择在特定行的末尾添加字符串。我有一个方法,可以找到我想要附加字符串的行,但我不确定如何在不在csv文件底部创建新行的情况下将该字符串添加到该行的末尾 ''' QFile学生列表(“listOfStudents.csv”); QTextStream读取(&listOfStudents),写入(&listOfStudents; QStringList学生信息; QStri

我对stackoverflow还是一个新手,所以如果有什么我做得不对的地方,我很抱歉。我有一个不断更新的csv文件,但我希望能够选择在特定行的末尾添加字符串。我有一个方法,可以找到我想要附加字符串的行,但我不确定如何在不在csv文件底部创建新行的情况下将该字符串添加到该行的末尾

'''

QFile学生列表(“listOfStudents.csv”);
QTextStream读取(&listOfStudents),写入(&listOfStudents;
QStringList学生信息;
QString junkLine=read.readLine(),line,studentLine,
附录字符串=“拉尔夫·爱默生”;
如果(!listOfStudents.open(QFile::ReadWrite | QFile::Text))
{
警告(这是“标题”,“未打开!”);
}
而(!read.atEnd())
{
line=read.readLine();
if(line.contains(IDNumber,Qt::区分大小写))
{
学生线=线;
学生线+=“,”;
studentLine+=附加字符串;
line.clear();

写文件通常是连续的、有界的字节流。因此,如果你想在一个中间写,你就必须向前移动其余的空间来为新的空间腾出空间。 如果您的文件足够小,一个简单的解决方案是完全解析它们,将它们作为数据结构保存在内存中,修改它,然后将其转储回内存


最有效的解决方案是在将文件读入一个新的文件时,在到达插入点时添加新的文件,然后继续将文件的其余部分复制到输出中。

文件通常是连续的、有界的字节流。因此,如果您想在中间写一个,则将是H。ave必须向前移动所有剩余的部分,为新的部分腾出空间

如果您的文件足够小,一个简单的解决方案是完全解析它们,将它们作为数据结构保存在内存中,修改它,然后将其转储回内存

但是,最有效的解决方案是在将文件读入新文件时写入,然后在到达插入点时添加新文件,然后继续将文件的其余部分复制到输出中

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;
    }
}