Qt QDataStream 读写文件

项目目录:

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

    //定义一个写函数
    void writeData();

    //定义一个读函数
    void readData();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

 

widget.cpp:

#include "widget.h"
#include "ui_widget.h"

#include <QDataStream>
#include <QFile>
#include <QDebug>
#include<QTextStream>//读写的时候可以指定编码
#define cout qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    writeData();
    readData();
}

Widget::~Widget()
{
    delete ui;
}
void Widget::writeData()
{
    //创建对象
    QFile file ("../test.txt");

    //打开文件,只写方式打开
    bool isOk = file.open(QIODevice::WriteOnly);
    if (isOk == true )
    {
        //创建数据流,和file文件关联
        //往数据流中写数据,相当于往文件里写数据
        QDataStream stream(&file);

        stream<<QString ("主要看气质")<<250;
        file.close();

    }

}
void Widget::readData()
{
    //创建对象
    QFile file ("../test.txt");

    //打开文件,只读方式打开
    bool isOk = file.open(QIODevice::ReadOnly);
    if (isOk == true )
    {
        //创建数据流,和file文件关联
        //往数据流中读数据,相当于往文件里读数据
        QDataStream stream(&file);

        //读的时候,按照写的顺序取数据
        QString str;
        int a;

        stream>>str>>a;

        //打印,如果没有出现想要的结果,试试下面那一句
//        qDebug()<<str<<a;
//        qDebug()<<str.toUtf8().data()<<a;
        cout<<str.toUtf8().data()<<a;
        file.close();

    }
}
posted @ 2019-07-06 16:33  Mr_Song_D  阅读(6866)  评论(0编辑  收藏  举报