在 qtextStream 中寻找行
seek line in qtextStream
我正在使用 QTextStreamer 读取 QFile
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&file);
line = stream.readLine();
//...
但根据我的要求,我只需要从我的文件中读取特定的行集。例如:如果文件包含 1034 行。用户只能select 读取第 107 行到第 300 行并显示在文本框中。
如何调整 qtextStream reader 的位置以指向文件的特定行。
现在我正在实施
int count = 4;
while(count > 0)
{
line = stream.readLine();
count--;
}
line = stream.readLine();
QTextStream 是一个流,不是数组。那是因为你不能不读就得到一些线。
一些方法是(只是一个最简单的例子):
QFile file("file_name");
QTextStream stream(&file);
QStringList list;
int line = 0;
if(file.open(QIODevice::ReadOnly))
while(!stream.atEnd()) {
if(line == 4 || line == 5 || line == 6)
list << stream.readLine();
else
stream.readLine();
line++;
}
更难的方法:
if(file.open(QIODevice::ReadOnly)) {
QByteArray ar = file.readAll();
QByteArray str;
for(int i = 0; i < ar.size(); i++) {
if(line == 4 || line == 5 || line == 6) {
if(ar.at(i) == '\n') {
list << QString::fromUtf8(str.replace("\r", ""));
str.clear();
}
else
str += ar.at(i);
}
if(ar.at(i) == '\n')
line++;
}
}
我正在使用 QTextStreamer 读取 QFile
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream stream(&file);
line = stream.readLine();
//...
但根据我的要求,我只需要从我的文件中读取特定的行集。例如:如果文件包含 1034 行。用户只能select 读取第 107 行到第 300 行并显示在文本框中。
如何调整 qtextStream reader 的位置以指向文件的特定行。
现在我正在实施
int count = 4;
while(count > 0)
{
line = stream.readLine();
count--;
}
line = stream.readLine();
QTextStream 是一个流,不是数组。那是因为你不能不读就得到一些线。
一些方法是(只是一个最简单的例子):
QFile file("file_name");
QTextStream stream(&file);
QStringList list;
int line = 0;
if(file.open(QIODevice::ReadOnly))
while(!stream.atEnd()) {
if(line == 4 || line == 5 || line == 6)
list << stream.readLine();
else
stream.readLine();
line++;
}
更难的方法:
if(file.open(QIODevice::ReadOnly)) {
QByteArray ar = file.readAll();
QByteArray str;
for(int i = 0; i < ar.size(); i++) {
if(line == 4 || line == 5 || line == 6) {
if(ar.at(i) == '\n') {
list << QString::fromUtf8(str.replace("\r", ""));
str.clear();
}
else
str += ar.at(i);
}
if(ar.at(i) == '\n')
line++;
}
}