QT从文本文件中读取指定行的内容的代码
时间: 2023-08-18 12:05:18 浏览: 264
可以使用以下代码来读取指定行数的文本文件内容:
```cpp
#include <QFile>
#include <QTextStream>
#include <QStringList>
QString readLineFromFile(const QString& filename, int lineNumber)
{
QFile file(filename);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return QString();
QTextStream in(&file);
int lineCount = 0;
while (!in.atEnd()) {
QString line = in.readLine();
lineCount++;
if (lineCount == lineNumber) {
return line;
}
}
return QString();
}
```
该函数会返回文件中指定行数的内容,如果文件不能打开或者行数不合法,则返回一个空字符串。
相关问题
qt操作excel生成csv文件并且读取TXT文本内容向指定单元格内写入
要在Qt中操作Excel并生成CSV文件,并读取TXT文本内容向指定单元格写入数据,你可以使用QtXlsxWriter库和QFile/QTextStream类的组合。以下是一个示例代码:
```c++
#include <QCoreApplication>
#include <QtXlsx>
#include <QDebug>
#include <QFile>
#include <QTextStream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个工作簿
QXlsx::Document xlsx;
// 打开TXT文件
QFile file("data.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Open failed!";
return -1;
}
// 创建一个文本流,并与文件关联
QTextStream in(&file);
// 读取TXT文件内容并写入Excel
int row = 1;
while (!in.atEnd()) {
QString line = in.readLine();
QStringList data = line.split("\t"); // 假设TXT文件使用制表符分隔数据
for (int col = 1; col <= data.size(); col++) {
QString cell = QXlsx::CellReference(row, col).toString();
xlsx.write(cell, data[col-1]);
}
row++;
}
// 关闭TXT文件
file.close();
// 保存为CSV文件
if (!xlsx.saveAs("test.csv", QXlsx::Format::CSV)) {
qDebug() << "Save failed!";
return -1;
}
qDebug() << "CSV file generated!";
return a.exec();
}
```
这个示例代码会从名为"data.txt"的TXT文件中读取数据,并将数据按制表符分隔后写入Excel的不同单元格。然后,它将保存工作簿为CSV文件。你可以根据需要修改读取的TXT文件和写入的单元格格式。
Qt删除指定行文本文件内容
可以使用QFile和QTextStream类来删除指定行的文本文件内容。以下是一个示例代码:
```cpp
QString filename = "example.txt";
QFile file(filename);
if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
QTextStream stream(&file);
QString line;
int lineNumber = 0;
while (!stream.atEnd()) {
line = stream.readLine();
++lineNumber;
if (lineNumber != 3) { // 删除第3行
stream << line << endl;
}
}
file.resize(file.pos()); // 调整文件大小
file.close();
}
```
在上面的示例中,我们打开了一个名为“example.txt”的文本文件,并使用QTextStream从文件中读取每一行。当我们遍历每一行时,我们检查当前行是否为要删除的行(第3行),如果不是,就将该行写入输出流中。最后,我们通过调整文件大小来删除文件中的多余文本。请注意,如果要删除的行位于文件的结尾,可以不使用调整文件大小的步骤。