当前位置: 代码迷 >> QT开发 >> QFile和QDataStream无法对文本读取解决思路
  详细解决方案

QFile和QDataStream无法对文本读取解决思路

热度:71   发布时间:2016-04-25 03:49:00.0
QFile和QDataStream无法对文本读取
我建立了一个小实验,测试是否能够通过QFile和QDataStream来tokenize文本的内容。但是测试失败。我这里有一个文本内容是这样的:

TestFile.txt---------
abc def    ghi

我想输出的结果是这样的:abcdefghi
源文件是这样的…………
#include <iostream>
#include <QFile>
#include <QDataStream>
#include <QString>

int main( int argc, char** argv )
{
    using namespace std;

    QFile file;
    file.setFileName( "TestFile.txt" );
    if ( !file.open( QIODevice::ReadOnly ) )
        cout << "无法打开文件。\n";
    cout << "打开文件成功!准备输出数据。\n";

    QDataStream in( &file );
    QString checkStr;
    do
    {
        in >> checkStr;
        cout << (char*)checkStr.data( );
    }
    while ( !checkStr.isEmpty( ) );
    file.close( );

    return 0;
}

但是程序无法去掉空格将文件的内容逐一输出。我改怎么做才能达到效果呢?

------解决方案--------------------
trim一下不好么?

如果你是2进制文件用datastream比较好,文本文件textstream比较好。
如果你知道文件格式。使用文件偏移量直接读取,用datastream + readRawData.方法比较好。

大家还有啥其他经验和方法跟帖哈。
------解决方案--------------------
QDataStream是二进制读写,QTextStream才是文本读写用的。
用QString::replace(" ", "");将空格替换掉,就成一串了。