• 5521阅读
  • 8回复

[提问]还是读文件的问题 [复制链接]

上一主题 下一主题
离线celia_jun
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-02
在论坛中看到很多读文件的帖子,可是不能清除我的疑惑,故再发贴一篇,求高手解惑。
我想读取文件类似下面的格式
ABC                              abc              //jwigjowe
EGIO                            egjioj           //wegjiwejooig
WEGJIWOEJGI           egio            //WJEIOge
我主要需要的是前面的两个数据,比如ABC 和 abc, 我想按行读取 然后将每一行的第二个数据(比如abc)单独提取出来。
下面的代码是我初步写的,但是感觉有问题。不知道while(!fs.atEnd()) {...} 循环里面存入到strlist中的究竟是每一行的数据还是只有最后一行了??我想读取文件以后对每一行进行分隔处理 并分别提取第二个数据。

求指教!!

QFile headfile(currentpath);
        if(!headfile.open(QFile::ReadOnly))
            return;
        QTextStream fs( &headfile);
        QString str;
        QStringList strlist;
        while(!fs.atEnd())
        {
            str = fs.readLine();
            str = str.trimmed();   // 过滤空格
            str = str.simplified();  //合并空格
            strlist = str.split(" ");
        }
离线roywillow

只看该作者 1楼 发表于: 2011-08-02
很显然……那个list是储存的最后一行的分割后的结果……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线celia_jun
只看该作者 2楼 发表于: 2011-08-02
回 1楼(roywillow) 的帖子
请问有没有啥办法将它们整体读出来以后再用类似**.at(1).indexOf() 这样来获取每一行的第二个数据呢。?
求教啦
离线jdwx

只看该作者 3楼 发表于: 2011-08-02
回 楼主(celia_jun) 的帖子
while(!fs.atEnd())
        {
            str = fs.readLine();
            str = str.trimmed();   // 过滤空格
            str = str.simplified();  //合并空格
            strlist<<str;
        }
foreach(str , strlist)
    {
        qDebug()<<str.split(" ").at(1);
    }
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线celia_jun
只看该作者 4楼 发表于: 2011-08-02
回 3楼(jdwx) 的帖子
感谢3楼的,但是突然又发现了一个问题,我的文件中有类似这样的结构:
ABC           0.0 0.0 0.0           //comment
按照我的考虑,这个时候,0.0 0.0 0.0算是整个的第二个数据,但是按照我前面的做法就把三个0.0分离了。。有什么好办法呢?
离线weihua1984

只看该作者 5楼 发表于: 2011-08-02
用多个空格分了
离线jdwx

只看该作者 6楼 发表于: 2011-08-02
回 4楼(celia_jun) 的帖子
这样的文件很难分析,要考虑到全部的数据格式,对每种格式,用专用方法分析。
没有其它办法,除非生成文件的程序也是你写的,改进输出方法,使文件容易分析。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线celia_jun
只看该作者 7楼 发表于: 2011-08-02
回 6楼(jdwx) 的帖子
感谢 只能具体问题具体分析了!!
离线roywillow

只看该作者 8楼 发表于: 2011-08-02
        QList<QStringList> list;
        while(!fs.atEnd())
        {
            QString str = fs.readLine();
            str = str.trimmed();   // 过滤空格
       str = str.simplified();  //合并空格
       QStringList strlist = str.split(" ");
            list << strlist;
        }
我想这样就可以通过list来访问了吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个