QT QFile从CSV文件中删除行

时间:2018-04-15 23:47:17

标签: c++ qt

我有一个CSV文件,我想删除其中的特定行。我想这样做的方法是逐行读取文件并检查该行的第一个元素是否等于变量。如果等于=>删除该行。

// get the project name from the combo box
QVariant projectName = ui->projectCombo->currentText();

QFile projectFile(CSV File);
// checks if file is valid and can open
if(!projectFile.open(QIODevice::ReadOnly)) {
    cout << "Error: can't copen file" << endl;
} else {
    cout << "File open successfully" << endl;
}

QTextStream in(&projectFile);
while(!in.atEnd()) {
    QString line = in.readLine();
    // Get the first element from line
    QString firstElement = line.split(',').first();
    // Check if firstElement is equal to the variable projectName
    if (firstElement == projectName.toString()) {
        // Delete current line
    }
}

我这样做是因为我想更新该行的特定数据。我知道Qt,更不用说c ++了,不能这样做。所以我想我从文件中获取该行,将其放入数据结构中,将其从文件中删除,在数据结构中编辑所需的数据,然后将数据结构中的更改数据附加到文件中

1 个答案:

答案 0 :(得分:0)

如果要根据行号删除,可以使用此

m_File.close();
QString qCommand = "sed -i 2d "+fileName;
string command = qCommand.toUtf8().constData();
system(command.c_str());
m_File.open(FileName.c_str(), ios::out|ios::app);

执行类似的功能,然后传递必要的参数。 甚至可以追加到同一文件之后,就像在同一函数中打开的文件一样