C ++ Qt-读取文本文件的特定部分

乔西·杰瑞娜·米兰达

我想在列表小部件中读取文本文件的特定部分。我尝试了不同的方法,并在网上寻找一些解决方案,但是找不到很多。我是使用Qt的新手,但在很大程度上与它相处得很好。

QFile YearInfo("C:/Users/Documents/info.txt");
        YearInfo.open(QIODevice::ReadWrite | QIODevice::Text);
        if(YearInfo.isOpen()){
            QTextStream in(&YearInfo);
            bool readEnabled = false;
            QString outputText, startToken = line, endToken = "*"; // line = "2019"
            while(!in.atEnd()){
               QString getLine = in.readLine();
               if(getLine == endToken){
                   readEnabled = false;
               }

               if(readEnabled){
                   outputText.append(getLine + "\n");
               }

               if(getLine == startToken){
                   readEnabled = true;
               }
            }
            ui->listWidget->addItem(outputText);
        }
            YearInfo.flush();
            YearInfo.close();

文本文件包含:

2019年职位部门职务日期(WM / RM / JR)*

2020年职位部门职务日期(PM / VR / ST)*

威廉·斯皮内利

只要您尝试提取以以下方式格式化的一段文本,您编写的代码就可以正常工作

2019
Position Division Title   <~~ this line is extracted
Date (W.M./R.M./J.R)      <~~ this line is extracted
More stuff                <~~ this line is extracted
*

如果您采用以下方式格式化了某些内容

2019 Position Division
Title Date (W.M./R.M./J.R) *
2019 Position Division Title Date (W.M./R.M./J.R) *

因为你,当你发现包含一行开始提取什么都不会被提取startToken结束令牌也一样。

您可以尝试while通过以下方式修改代码中的循环

while(!in.atEnd()){
    QString getLine = in.readLine().trimmed();

    if(getLine.startsWith(startToken)){
        readEnabled = true;
    }

    if(readEnabled){
        outputText.append(getLine + "\n");
    }

    if(getLine.endsWith(endToken)){
        readEnabled = false;
    }
}

现在,您正在检查行startsWith是否startToken在这里,我还添加了一条trimmed指令,以删除每行开头和结尾的空格(以防万一...)。同样的事情与做endsWithendToken

另外,最好以只读模式打开设备,因为无论如何您都不会对其进行修改

YearInfo.open(QIODevice::ReadOnly | QIODevice::Text);

并且flush最后的也是多余的。

希望这可以帮助=)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt(C ++):QFile成功创建文本文件,但未写入文本文件

来自分类Dev

C编程-从文本文件读取特定行

来自分类Dev

C编程读取文本文件的特定行

来自分类Dev

C编程-从文本文件读取特定行

来自分类Dev

读取文本文件的特定行 [C#]

来自分类Dev

读取文本文件C#

来自分类Dev

读取文本文件错误C

来自分类Dev

C ++逐行读取文本文件

来自分类Dev

从文本文件C ++读取输入

来自分类Dev

用 C 读取文本文件

来自分类Dev

Qt读取制表符分隔的文本文件的特定列

来自分类Dev

Qt:在特定时间间隔内逐行读取文本文件

来自分类Dev

从qml qt / quick中的文本文件中读取

来自分类Dev

从QML Qt / Quick中的文本文件读取行

来自分类Dev

从文本文件程序读取的简单Qt无法编译

来自分类Dev

使用 C++ 读取文本文件以读取特定关键字后面的值

来自分类Dev

从巨大的文本文件(c#4.0)中读取特定行

来自分类Dev

使用 C# 读取文本文件中的特定列

来自分类Dev

在c#中分别读取文本文件和访问文本文件的元素

来自分类Dev

(Qt C ++)如何从QTableView将选定的文件/文件夹打印到文本文件中

来自分类Dev

使用 Qt 比较文本文件

来自分类Dev

写入文本文件错误,QT

来自分类Dev

如何读取已在使用的文本文件(Windows C ++)

来自分类Dev

文本文件:逐行读取C#

来自分类Dev

动态读取文本文件上的更改C#

来自分类Dev

使用C#从文本文件读取

来自分类Dev

从C中的文本文件逐字读取

来自分类Dev

C#从文本文件读取,换行

来自分类Dev

从C中的文本文件读取矩阵