找回密码
 立即注册
收起左侧

新手 关于TXT文本文档数据读取显示的问题

11
回复
8820
查看
[复制链接]
累计签到:132 天
连续签到:1 天
来源: 2015-2-2 16:23:20 显示全部楼层 |阅读模式
1Qter豆
大神们,求助~
从txt文本里要读取这四条数据
10:14:43  $GPVTG,255.81,T,,M,0.049,N,0.090,K,A*3210:14:43  $GPGGA,101443.00,4155.48410,N,12323.86670,E,1,05,11.28,89.7,M,7.8,M,,*6B
10:14:44  $GPRMC,101444.00,A,4155.48380,N,12323.86717,E,0.040,251.46,160411,,,A*65
10:14:44  $GPVTG,251.46,T,,M,0.040,N,0.073,K,A*39

读取之后,我想判断按照时间一样的一起发送,比如,43秒的两条一起发送,然后44秒的两条一起发送显示在textbrowser上,要怎么办呢?

最佳答案

查看完整内容

拆分字符串,然后加判断语句就ok了...
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-2-2 16:23:21 显示全部楼层
拆分字符串,然后加判断语句就ok了...
参与人数 1人气 +1 收起 理由
adaluobo + 1 对我帮助很大!

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 10:09:41 显示全部楼层
一叶知秋 发表于 2015-2-2 19:29
拆分字符串,然后加判断语句就ok了...

我还想问一下,我的数据是存在txt文档里,是很多的,用readline读的时候是一下子读进去的,总显示超出数组范围的错误,我想读一条拆分字符然后再读一条拆分字符然后判断这两句,就这样循环,该怎么写啊?
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-2-3 10:37:57 显示全部楼层
首先你需要确认读出来的信息的格式是正确的,就是说你可以正确的进行拆分,这个你可以通过qDebug()打印信息查看,然后根据一些明显的特征进行拆分,比如以空格等进行拆分。如果你不需要把结果保存起来的话,就用QString接收,然后再用contains()进行判断就可以了,具体的代码就不写了,自己思考一下,有问题再回我
回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 10:58:39 显示全部楼层
一叶知秋 发表于 2015-2-3 10:37
首先你需要确认读出来的信息的格式是正确的,就是说你可以正确的进行拆分,这个你可以通过qDebug()打印信息 ...

我现在用qDebug显示的拆分数据是正确的,也可以进行判断,判断之后也可输出,但是是仅限于几句数据,而不是循环的输出,我想让它循环的读取、拆分、判断、输出,然后就显示数组超出范围的错误了
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-2-3 11:02:20 显示全部楼层
你把代码贴出来我看看
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-2-3 11:03:35 显示全部楼层
在贴一些你读出来来的数据,不要打乱它原来的格式,原样贴上来
回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 11:08:38 显示全部楼层
一叶知秋 发表于 2015-2-3 11:02
你把代码贴出来我看看

void MainWindow::timerDone()
{
    QFile file("GPS.txt");
    if (!file.open(QIODevice::ReadOnly  | QIODevice::Text))
        return;
    QTextStream in(&file);
    QString data1,data2,data3;
    while(!in.atEnd())
     {
         data1=file.readLine();
         QStringList strlist1=data1.split(" $");
        qDebug()<<strlist1<<endl;
        qDebug()<<strlist1.at(0)<<endl;
        QStringList list1=strlist1.at(0).split(":");
        qDebug()<<list1.at(0)<<list1.at(1)<<list1.at(2)<<endl;
         //ui->textBrowser->insertPlainText(data);
          data2=file.readLine();
          QStringList strlist2=data2.split(" $");
         qDebug()<<strlist2<<endl;
         qDebug()<<strlist2.at(0)<<endl;
         QStringList list2=strlist2.at(0).split(":");
         qDebug()<<list2.at(0)<<list2.at(1)<<list2.at(2)<<endl;
          //ui->textBrowser->insertPlainText(data);
          data3=file.readLine();
          QStringList strlist3=data3.split(" $");
         qDebug()<<strlist3<<endl;
         qDebug()<<strlist3.at(0)<<endl;
         QStringList list3=strlist3.at(0).split(":");
         qDebug()<<list3.at(0)<<list3.at(1)<<list3.at(2)<<endl;


    //for(i=0;i<list.size();i++)
    //{
         //data=file.read(10);
       // list<<data;
       if(strlist1.at(0)==strlist2.at(0))
        {

           if(strlist2.at(0)==strlist3.at(0))
           {
                ui->textBrowser->insertPlainText(data1);
                ui->textBrowser->insertPlainText(data2);
                ui->textBrowser->insertPlainText(data3);
           }
           else
           {
               ui->textBrowser->insertPlainText(data1);
               ui->textBrowser->insertPlainText(data2);
           }
       }
        else
           {ui->textBrowser->insertPlainText(data1);}
          //ui->textBrowser->insertPlainText(data);
         // ui->textBrowser->insertPlainText(strlist.at(0));


       //else
        //{qDebug()<<"jieshu";}


     // }

       }
    if(file.atEnd()){
        timer->stop();
     file.close();}
}
回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 11:09:13 显示全部楼层
一叶知秋 发表于 2015-2-3 11:03
在贴一些你读出来来的数据,不要打乱它原来的格式,原样贴上来

("10:14:44 ", "GPRMC,101444.00,A,4155.48380,N,12323.86717,E,0.040,251.46,160411,,,A*65
")

"10:14:44 "

"10" "14" "44 "

("10:14:44 ", "GPVTG,251.46,T,,M,0.040,N,0.073,K,A*39
")

"10:14:44 "

"10" "14" "44 "

("10:14:42 ", "GPDTM,W84,,0.0,N,0.0,E,0.0,W84*6F
")

"10:14:42 "

"10" "14" "42 "

("10:14:44 ", "GPGGA,101444.00,4155.48380,N,12323.86717,E,1,05,11.26,89.6,M,7.8,M,,*6D
")

"10:14:44 "

"10" "14" "44 "

("10:14:43 ", "GPRMC,101443.00,A,4155.48410,N,12323.86670,E,0.049,255.81,160411,,,A*6A
")

"10:14:43 "

"10" "14" "43 "

("10:14:43 ", "GPVTG,255.81,T,,M,0.049,N,0.090,K,A*32
")

"10:14:43 "

"10" "14" "43 "

("10:14:44 ", "GPRMC,101444.00,A,4155.48380,N,12323.86717,E,0.040,251.46,160411,,,A*65
")

"10:14:44 "

"10" "14" "44 "

("10:14:44 ", "GPVTG,251.46,T,,M,0.040,N,0.073,K,A*39
")

"10:14:44 "

"10" "14" "44 "

("10:14:44 ", "GPGGA,101444.00,4155.48380,N,12323.86717,E,1,05,11.26,89.6,M,7.8,M,,*6D
")

"10:14:44 "

"10" "14" "44 "

("
")

"
"

ASSERT failure in QList<T>::at: "index out of range", file c:\QtSDK\Desktop\Qt\4.8.0\mingw\include/QtCore/qlist.h, line 469
回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 11:11:54 显示全部楼层
一叶知秋 发表于 2015-2-3 11:02
你把代码贴出来我看看

10:14:44  $GPRMC,101444.00,A,4155.48380,N,12323.86717,E,0.040,251.46,160411,,,A*65
10:14:44  $GPVTG,251.46,T,,M,0.040,N,0.073,K,A*39
10:14:42  $GPDTM,W84,,0.0,N,0.0,E,0.0,W84*6F
10:14:44  $GPGGA,101444.00,4155.48380,N,12323.86717,E,1,05,11.26,89.6,M,7.8,M,,*6D
10:14:43  $GPRMC,101443.00,A,4155.48410,N,12323.86670,E,0.049,255.81,160411,,,A*6A
10:14:43  $GPVTG,255.81,T,,M,0.049,N,0.090,K,A*32
10:14:44  $GPRMC,101444.00,A,4155.48380,N,12323.86717,E,0.040,251.46,160411,,,A*65
10:14:44  $GPVTG,251.46,T,,M,0.040,N,0.073,K,A*39
10:14:44  $GPGGA,101444.00,4155.48380,N,12323.86717,E,1,05,11.26,89.6,M,7.8,M,,*6D

这是我要处理的数据,先弄了这几条,实际上是很多很多
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-2-3 11:36:05 显示全部楼层
本帖最后由 一叶知秋 于 2015-2-3 11:38 编辑

首先我建议你先查看txt的文件,我看了代码,如果文件中都是上面的数据格式应该是没问题的,文件中应该有不符合现在拆分方法的数据,其次在用split的时候最好加判断语句,比如你用list2.at(2), 那你最好看看你的list的长度最少要为3, 如果没有,长度小于3肯定报你那种错误,
  1. if (list.size() >= 3)
  2. {
  3. list.at(2) // 这样才安全
  4. }
复制代码
最后我觉得你的代码好像有些问题, 一是我看数据本身并不是按时间有序排列的,其次出现的位置和次数也不是固定的,你的那种写法并不能实现你的需求吧, 建议你先读进内存再做进一步的处理,这样效率要高些,你可以先把前两步做了,功能上的需求有问题,再探讨
回复

使用道具 举报

累计签到:132 天
连续签到:1 天
2015-2-3 13:19:13 显示全部楼层
一叶知秋 发表于 2015-2-3 11:36
首先我建议你先查看txt的文件,我看了代码,如果文件中都是上面的数据格式应该是没问题的,文件中应该有不 ...

哦,好的,我再看一下,谢谢你的耐心解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了