QTextStream读写文件

2024-02-21 02:28
文章标签 读写 qtextstream

本文主要是介绍QTextStream读写文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QTextStream 类是 Qt 框架中用于文本读写的一个非常强大的类,它提供了丰富的接口用于方便地进行文本文件的输入输出。QTextStream 可以用于读取和写入文本文件,同时也支持字符串(如 QString)的操作。它自动处理各种不同的字符集编码问题,确保跨平台时文本的正确读写。

主要功能

  • 文本编码QTextStream 支持多种编码格式,如 UTF-8、UTF-16 等,保证了文本内容在不同平台和环境间的一致性。
  • 流式操作:提供了类似 C++ 标准库中 iostream 的流式操作符 (<<>>),可以非常便捷地对文本内容进行读写。
  • 字符串操作:除了文件,QTextStream 也能够对字符串进行读写操作,提高了其使用的灵活性。
  • 格式化文本:能够设置数字和文本的格式,例如小数点后的位数、十六进制和科学记数法等,方便输出格式化的文本。

常用方法

  • setCodec():设置文本流的编码格式。
  • readLine():以行为单位读取文本。
  • <<>>:流式写入和读取操作,支持各种基本数据类型和字符串。
  • flush():刷新流,确保所有输出操作都被写入底层设备。
  • seek():移动文本流内的当前位置。
  • atEnd():判断是否已到达文本流的末尾。

示例代码

#include <QFile>
#include <QTextStream>
#include <QDebug>int main() {QFile file("example.txt");// 打开文件以用于写入if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << "Hello, World!" << Qt::endl;  // 使用流式操作写入文本file.close();}// 打开文件以用于读取if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream in(&file);QString line = in.readLine();  // 读取一行文本qDebug() << line;file.close();}return 0;
}

这个示例展示了如何使用 QTextStream 为一个文本文件写入一行内容,然后再读取出来。

myDemo

//QStream读取文件
void Widget::on_btnStreamR_clicked()
{//打开QFile file("D:/c++QT/lessonDemo/noteBookProject/test.txt");if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"open error";}//读取QTextStream in(&file);in.setCodec("UTF-8");//QString context = in.read(file.size());方法一:按照大小整个读//方法二:如果没到尾部,一行一行的读。while(!in.atEnd()){QString context = in.readLine();qDebug() << context;qDebug() << "=============";//std::cout <<"=========="<<std::endl;}//关闭file.close();}//QStream写入文件
void Widget::on_btnStreamW_clicked()
{QFile file("D:/c++QT/lessonDemo/noteBookProject/test3.txt");if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug()<<"open error";}QTextStream out(&file);out.setCodec("UTF-8");out << "write by stream to file" ;file.close();}

结论

QTextStream 是处理文本文件和字符串的理想工具。它的设计充分考虑了字符编码和文本格式的问题,使得在跨平台应用开发中文本的输入输出变得非常简单和直接。不管是处理纯文本文件,还是需要进行复杂文本处理的场景,QTextStream 都提供了强大的功能支持。

这篇关于QTextStream读写文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/730305

相关文章

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

10. 文件的读写

10.1 文本文件 操作文件三大类: ofstream:写操作ifstream:读操作fstream:读写操作 打开方式解释ios::in为了读文件而打开文件ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入ios::app追加方式写文件ios::trunc如果文件存在先删除,在创建ios::ate打开文件之后令读写位置移至文件尾端ios::binary二进制方式

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

关于使用cspreadsheet读写EXCEL表格数据的问题

前几天项目有读写EXCEL表格的需求,我就找了大概有几种,大致分为:COM方法、ODBC方法、OLE方法、纯底层格式分析方法。由于COM方法要求必须安装有OFFICE的EXCEL组件,纯底层格式分析方法又很多功能需要自行去完善,所有最终选择了数据库的方法,用数据库的方法去存取xls格式的数据。网上有一个高手写的CSpreedSheet,看了一下提供的接口,感觉挺好用的。在使用的过程中发现几个

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t