1. 程式人生 > >文字流和資料流

文字流和資料流

Qt裡面將檔案分為兩大類

1.檔案內容是可讀的文字檔案

2.檔案內容是直接的二進位制檔案

 

QTextStream :

寫入的資料全部轉換為可讀文字

QDataStream:

寫入的資料全部轉換為二進位制資料

 

//直接讀寫

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    QFile file("C:/Users/hp/Desktop/test.hex");

 

    if( file.open(QIODevice::WriteOnly) )

    {

        QString dt = "D.T.Software";

        double value = 3.14;

 

        file.write(dt.toStdString().c_str());

        file.write(reinterpret_cast<char*>(&value), sizeof(value));

 

        file.close();

    }

 

    if( file.open(QIODevice::ReadOnly) )

    {

        QString dt = "";

        double value = 0;

 

        dt = QString(file.read(12));

        file.read(reinterpret_cast<char*>(&value), sizeof(value));

 

        file.close();

 

        qDebug() << dt;

        qDebug() << value;

    }

    

    return a.exec();

}

 

void text_stream_test(QString s)   //文字檔案讀寫

{

    QFile file(s);

 

    if( file.open(QIODevice::WriteOnly | QIODevice::Text) )

    {

        QTextStream out(&file);

        QString by = "BadogYang";

        double value = 3.14;

 

        out << by << endl;

        out << value << endl;

 

        file.close();

    }

 

    if( file.open(QIODevice::ReadOnly | QIODevice::Text) )

    {

        QTextStream in(&file);

 

        while( !in.atEnd() )     //文字檔案輸出方式

        {

            QString line = in.readLine();

 

            qDebug() << line;

        }

 

        file.close();

    }

}

 

void data_stream_test(QString s)    //資料檔案讀寫

{

    QFile file(s);

 

    if( file.open(QIODevice::WriteOnly) )

    {

        QDataStream out(&file);

        QString by = "BadogYang";

        double value = 3.14;

 

        out << by;

        out << value;

 

        file.close();

    }

 

    if( file.open(QIODevice::ReadOnly) )

    {

        QDataStream in(&file);

 

        QString by = "";

        double value = 0;

 

        in >> by;

        in >> value;

 

        qDebug() << by;

        qDebug() << value;

 

        file.close();

    }

}

 

不同的qt版本預設資料檔案處理方式可能不同,我們可以設定qt的讀寫版本號,需要設定的情況多是不同Qt程式之間的資料傳遞

void setVersion(int v) //設定讀寫版本號

int version() const //返回版本資訊

 

//文章參考狄泰軟體學院Qt視訊教程