QT读写文件方法介绍以及编码问题解决 |
您所在的位置:网站首页 › qt编码问题 › QT读写文件方法介绍以及编码问题解决 |
说明
当在qt中要进行文件的读写时,qt提供QFile类帮助我们进行文件的读写操作。这其中我们需要使用到open与write两个主要的方法。但如果使用write方法去写入文件并保存时,会出现无法保存为UTF-8的编码格式,下面是对open、write方法的介绍以及如何将数据保存为UTF-8的格式。 open这里对open方法只进行一个简单的介绍,老规矩,先看一下官方文档中的说明: [override virtual] bool QFile::open(QIODevice::OpenMode mode) Reimplements: QIODevice::open(QIODevice::OpenMode mode). Opens the file using OpenMode mode, returning true if successful; otherwise false. The mode must be QIODevice::ReadOnly, QIODevice::WriteOnly, or QIODevice::ReadWrite. It may also have additional flags, such as QIODevice::Text and QIODevice::Unbuffered. 文档中说明open方法是一个支持重写的虚方法,所以其有多种重写实现,这里不一一展现。在使用open方法时,需要传入其所支持的模式标志。 writewrite方法支持一个参数或两个参数 *qint64 QIODevice::write(const char data, qint64 maxSize) qint64 QIODevice::write(const char *data)(This is an overloaded function.) 向文件中写入最多maxSize大小的data中的数据,成功写入会返回真实写入的字节大小,执行异常则返回-1。两个方法效果相同。 示例需引入QFile库 QFile file("./Test.txt"); if (file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) { QString strTest = "input test text to file"; file.write(strTest..toUtf8().data()); file.close(); } 编码问题解决当使用上述方法去读写*.json类文件时,会出现保存后的文件的编码格式为ANSI,导致读写之间出现差异,此时,我们可以使用 QTextStream 类对文件进行保存。示例如下: QFile file("./Test.json"); if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)){ return ; } QString strJson; strJson= ""{\"error\":0}"; QTextStream streamFileOut(&file); streamFileOut.setCodec("UTF-8"); //设置编码格式 streamFileOut |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |