求教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());
@