首页 > 其他 > 详细

Qt QTextStream 读写文件

时间:2019-07-06 17:18:52      阅读:118      评论:0      收藏:0      [点我收藏+]

项目目录:

技术分享图片

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 slots:
    void on_buttonRead_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

 

 

widget.cpp:

#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QTextStream>//可以指定编码

#include <QDebug>
#include <QFileDialog>

#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;
    file.setFileName("../demo.txt");

    bool isOk = file.open(QIODevice::WriteOnly);
    if (isOk == true )
    {
        QTextStream stream(&file);

        //指定编码
        stream.setCodec("UTF-8");
        stream << QString("主要看气质")<<250;

        file.close();
    }
}



/*使用readData()函数的话,能够输出结果,只是输出的结果中会多出一个0;
 * 这是因为利用这种办法它并不能判断字符串的结尾,所以就将str和a当成一个字符串了,到后面要输出a的时候,
 * 里面已经没有内容了,于是就输出了0;
 * 这也说明使用这种方式读内容的话,并不安全,
 * 所以应该采用readall、readline的方式
*/
void Widget::readData()
{
    QFile file;
    file.setFileName("../demo.txt");

    bool isOk = file.open(QIODevice::ReadOnly);
    if (isOk == true )
    {
        QTextStream stream(&file);

        //指定编码
        stream.setCodec("UTF-8");

        QString str;
        int a;
        stream>>str >>a;


        cout<<str<<a;

        file.close();
    }
}


/*
 * 按照如下的方式去读取文件中的内容
 * 在ui界面中创建一个按钮和文本编辑器,并将按钮转到槽,
*/


void Widget::on_buttonRead_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,"open","../");
    if (false ==path.isEmpty())
    {
        QFile file;
        file.setFileName(path);

        bool isOk = file.open(QIODevice::ReadOnly);
        if (isOk == true )
        {
            QTextStream stream(&file);

            //指定编码
            stream.setCodec("UTF-8");

            QString str = stream.readAll();
            ui->textEdit->setText(str);

            file.close();
        }
    }
}

 

Qt QTextStream 读写文件

原文:https://www.cnblogs.com/doker/p/11143184.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!