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



  • 代码如下
    @
    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()来判断文件是否已经结束。我试了一下发现果然会直接跳到结尾,那我怎么判断是不是到文件结尾了啊?



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



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

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

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


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.