QT 怎么删除文本文件中的某一行数据?(QFile)
时间: 2023-09-27 07:06:39 浏览: 168
可以通过以下步骤删除文本文件中的某一行数据:
1. 打开要删除行的文本文件并读取所有行。
2. 找到要删除的行并将其从读取的行中删除。
3. 关闭原始文件并重新打开以进行写入。
4. 将修改后的行写入原始文件。
下面是一个示例代码,可以实现以上步骤:
```cpp
#include <QFile>
#include <QTextStream>
bool removeLineFromFile(const QString& fileName, const QString& lineToRemove)
{
// 打开文件
QFile inputFile(fileName);
if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
return false;
}
// 读取所有行并删除要删除的行
QStringList lines;
QTextStream inStream(&inputFile);
while (!inStream.atEnd())
{
QString line = inStream.readLine();
if (line != lineToRemove)
{
lines << line;
}
}
inputFile.close();
// 写入修改后的行到文件
if (!inputFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
{
return false;
}
QTextStream outStream(&inputFile);
for (const QString& line : lines)
{
outStream << line << "\n";
}
inputFile.close();
return true;
}
```
你可以调用这个函数,并将要删除的行作为参数传递给它。例如:
```cpp
QString fileName = "test.txt";
QString lineToRemove = "This is the line to remove.";
bool success = removeLineFromFile(fileName, lineToRemove);
if (success)
{
qDebug() << "Line removed successfully.";
}
else
{
qDebug() << "Failed to remove line.";
}
```
注意:这个函数只能删除与参数 `lineToRemove` 完全匹配的行。如果要删除包含特定字符串的所有行,则需要在函数中进行相应的修改。