Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. 求教QTextStream seek 截取大段文字时,文字开头出现乱码
Forum Updated to NodeBB v4.3 + New Features

求教QTextStream seek 截取大段文字时,文字开头出现乱码

Scheduled Pinned Locked Moved Chinese
3 Posts 3 Posters 6.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    shen yang
    wrote on last edited by
    #1

    代码如下
    @
    QString getStrFromFile(){
    QFile file("D://tale.txt");
    if(!file.open(QIODevice::ReadOnly)){
    qDebug()<<"File can not read";
    }
    QTextStream in(&file);
    QTextCodec *codec = QTextCodec::codecForName("gb18030");
    in.setCodec(codec);

        QString str;
        int position=TEXTREADERCONSTANT::PAGEINDEX*TEXTREADERCONSTANT::PAGECOUNT;
        in.seek( 0 );
        bool flag=in.seek(position);
        qDebug()<<"position is "<<position;
        qDebug()<<"flag :"<<flag;
    

    // while(!in.atEnd()){
    str=in.read(TEXTREADERCONSTANT::PAGECOUNT);
    // }
    return str;
    }
    @
    当显示在text 框中时,开头出现乱码

    @
    山χ校厣夏强霉帕拇种ι希谷挥ι氏治奘《矗岩壕尤簧钌钋度肜锩妗�

    他两次无心中所微微显露出来的绝世功力,真可谓之惊世骇俗,吓人至极,若非亲目所见,试想又会有谁能相信,世上竟有这种武林高人呢?
    @
    @
    恍Γフ频毙兀乩竦溃骸盎畚虼笫Γ鹄次揄Γ”鹗辏笫α簧伲玻」玻 �

    这慧悟大师不是他人,乃是当今武林中,声望最高的少林寺掌门老方丈,亦是上次“武林帖”的得主。
    @
    求教大大们,怎么解决啊!
    还有QTextStream的文档里面说了,对于stdin进行读取时,不要使用QTextStream::atEnd()来判断文件是否已经结束。我试了一下发现果然会直接跳到结尾,那我怎么判断是不是到文件结尾了啊?

    1 Reply Last reply
    0
    • L Offline
      L Offline
      leonlee
      wrote on last edited by
      #2

      您的代码是在哪一个平台操作呢?

      1 Reply Last reply
      0
      • U Offline
        U Offline
        uranusjr
        wrote on last edited by
        #3

        看代碼應該是 Windows。這個問題的可能性比較多,或許需要附上你讀的文字檔才能確認原因。

        不理解你後面的問題。你的代碼是讀取實體檔案,不是讀 stdin,所以可以用 QTextStream::atEnd() 沒問題呀?如果是讀 stdin,那麼就讀進來後用 QString::isNull() 判斷有沒有讀到東西即可。擷取 QTextStream 文件的範例:

        @
        QTextStream stream(stdin);
        QString line;
        do {
        line = stream.readLine();
        } while (!line.isNull());
        @

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved