Qt中的QFile读写文件操作「建议收藏」

Qt中的QFile读写文件操作「建议收藏」1.首先记录一下QString,QByteArray,char*之间的转换(1)QString->QByteArrayQStringbuf="123";QByteArraya=buf.toUtf8();//中文a=buf.toLocal8Bit();//本地编码(2)QByteArray->char*char*b=a.data…

大家好,又见面了,我是你们的朋友全栈君。

1.首先记录一下QString,QByteArray,char * 之间的转换

(1) QString -> QByteArray

QString buf = "123";
QByteArray a = buf.toUtf8(); //中文
a = buf.toLocal8Bit();  //本地编码

(2) QByteArray -> char *

char *b = a.data();

(3) char * -> QString[网络编程常常涉及到]

char *p = "abc";
QString c = QString(p);

2.QFile读写文件

在这里插入图片描述
widget.cpp源码如下:

#include "widget.h"
#include "ui_widget.h"
#include<QFile>
#include<QFileDialog>

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

Widget::~Widget()
{
    delete ui;
}

void Widget::on_buttonRead_clicked()
{
    QString path = QFileDialog::getOpenFileName(this,
                                                "open",
                                                "../",
                                                "TXT(*.txt)");
    if(path.isEmpty() == false){
        //文件对象
        QFile file(path);

        //打开文件
        bool isOK = file.open(QIODevice::ReadOnly);
        if(isOK == true){
#if 0
            //读文件,默认只识别UTF-8
           QByteArray array = file.readAll();//多查看帮助文档
           //显示到编辑区
           ui->textEdit->setText(array);
#endif
            QByteArray array;
            while (file.atEnd() == false) {
                //读一行
               array +=  file.readLine();
               ui->textEdit->setText(array);
            }

        }
        file.close();
    }

}

void Widget::on_buttonSave_clicked()
{
    QString path = QFileDialog::getSaveFileName(this, "save",
                                                "../", "TXT(*.txt)");
    if (path.isEmpty() == false){
        //创建文件对象
        QFile file;
        //关联文件名字
        file.setFileName(path);
        //打开文件,只写方式
        bool isOK = file.open(QIODevice::WriteOnly);
        if (isOK == true){
            //获取编辑区内容
            QString str = ui->textEdit->toPlainText();
            //write files
            //QString -> QByteArray
           // file.write(str.toUtf8());
            //QString -> C++ string ->char*
            file.write(str.toStdString().data());
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130797.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 这2个PDF转Word免费不限页数工具很多人没用过

    这2个PDF转Word免费不限页数工具很多人没用过很多人在搜索下载过PDF转换器的小伙伴都会有一个灵魂拷问:难道就没有免费还没页数限制的PDF转Word的工具吗?小编经过不断的对比和试用,找到以下两款好用免费的工具,相信总有一个你能用上。一、PDF转换器相信了解PDF这种文档格式设计由来的人对于Adobe肯定不陌生,所以首先要说的PDF转换工具就是AdobePDF,下载安装后打开软件,直接将PDF拖到软件页面打开即可,然后点击左上角“文件”中的“另存为其他”,选择我们需要转换成的Word格式就可以了。或者点击右侧“工具”选项中的“将文件导出为”并

  • 51单片机按键控制步进电机加减速及正反转

    51单片机按键控制步进电机加减速及正反转之前尝试用单片机控制42步进电机正反转,电机连接导轨实现滑台前进后退,在这里分享一下测试程序及接线图,程序部分参考网上找到的,已经实际测试过,可以实现控制功能。所用硬件:步进电机及驱动器、STC89C52单片机、直流电源1、硬件连接图注意:上图为共阳极接法,实际连接参考总体线路连接。 驱动器信号端定义:PUL+:脉冲信号输入正。(C…

  • linux -umask

    linux -umask

  • JAVA遍历数组的三种方法_如何遍历一个数组

    JAVA遍历数组的三种方法_如何遍历一个数组我们也了解Java也已经很久了,那今天小编想问大家是否知道java遍历数组的方式有哪些?是不是内心已经已经有答案了?让就跟着小编的步伐一起看看吧。1.for循环遍历这是最基本的遍历方式通常遍历数组都是使用for循环来实现。遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。2.Arrays的toString方法debug快速查看方法利用Array…

  • Java中如何通过键盘输入一个数组

    Java中如何通过键盘输入一个数组有时候在编写Jave的时候需要键盘输入一个数组,本小白也是看了几篇博客后才知道了如何在自己的程序中进行键盘输入,废话不多说,直接上代码:第一种方法:(不限制输入数组的长度)System.out.println("请输入几个数并用逗号隔开:");Scannersc=newScanner(System.in);Stringstr=sc.next().toString();…

  • termux基本使用教程[通俗易懂]

    termux基本使用教程[通俗易懂]更新与https://lruihao.cn/termux1.html前面有一篇文章写到一些传送门初始化下载并初始化termux安装vim安装编辑器vimpkginstallvim解决中文乱码问题在home目录下,新建.vimrc文件vim.vimrc添加内容如下:setfileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号