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 截取大段文字时,文字开头出现乱码
QtWS: Super Early Bird Tickets Available!

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

Scheduled Pinned Locked Moved Chinese
3 Posts 3 Posters 6.1k Views
  • 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 1 Sept 2011, 09:02 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 29 Oct 2011, 23:51 last edited by
    #2

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

    1 Reply Last reply
    0
  • U Offline
    U Offline
    uranusjr
    wrote on 1 Nov 2011, 01:26 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