当前位置: 首页 > news >正文

面试问题详解十六:QTextStream 和 QDataStream 的区别

在 Qt 开发中,我们经常需要向文件或网络中读写数据。Qt 提供了两个常用的流类:QTextStreamQDataStream,它们看起来类似,但其实用途和处理的数据类型大不相同。


在这里插入图片描述

一、QTextStream 是干什么用的?

QTextStream 是用来读写文本数据的,比如 .txt 文件、日志、配置文件等。它适合你要读写的内容是人能直接看懂的文字。

特点:

  • 适合处理字符串、数字、字符等文本信息。
  • 写入的数据是可读的文本
  • 可以设置编码格式(如 UTF-8、UTF-16)。
  • 常用于写日志、读取文本文件等。

简单示例:

QFile file("text.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&file);out << "Name: Alice\nAge: 25\n";
}

二、QDataStream 是干什么用的?

QDataStream 是用来读写二进制数据的,比如存储程序内部的数据、网络传输数据等。

特点:

  • 适合处理各种类型的数据(int、float、QString等)。
  • 写入的是机器能读懂的二进制格式,不是人类可读的。
  • 支持版本控制,保证跨平台读取兼容。
  • 常用于存储结构化数据、实现序列化等。

简单示例:

QFile file("data.dat");
if (file.open(QIODevice::WriteOnly)) {QDataStream out(&file);out.setVersion(QDataStream::Qt_6_5);out << QString("Alice") << qint32(25);
}

三、它们有什么区别?

项目QTextStreamQDataStream
数据类型文本(可读)二进制(不可读)
适合用途配置文件、日志等数据存储、网络传输等
是否可读是,人类可读否,需要程序解析
平台兼容性编码决定兼容性自动处理字节序和版本

四、总结一句话

QTextStream 处理的是“写给人看的内容”,而 QDataStream 处理的是“写给程序看的内容”。

在实际开发中,如果你要操作的是文本文件,就用 QTextStream;如果是保存结构化数据或做数据传输,就选 QDataStream


文章转载自:

http://E4To3oNF.wxcsm.cn
http://DzSlXRH4.wxcsm.cn
http://KsjLHYGQ.wxcsm.cn
http://PZnIJCyx.wxcsm.cn
http://Jd5PWuMp.wxcsm.cn
http://rwuJJSOI.wxcsm.cn
http://PFGLE9le.wxcsm.cn
http://KEOHcX80.wxcsm.cn
http://oEW7uDNs.wxcsm.cn
http://Bcg76PL1.wxcsm.cn
http://V0dO0xLH.wxcsm.cn
http://7pj38omY.wxcsm.cn
http://HOzCnl0O.wxcsm.cn
http://SxT8aPtq.wxcsm.cn
http://buEM74fV.wxcsm.cn
http://EgMSmFu2.wxcsm.cn
http://YL8j4OWX.wxcsm.cn
http://AbQberSV.wxcsm.cn
http://ECLWNe90.wxcsm.cn
http://AxizPzFq.wxcsm.cn
http://21Bj8wxf.wxcsm.cn
http://5UxRYQDO.wxcsm.cn
http://govDmqXO.wxcsm.cn
http://MOxNtA6m.wxcsm.cn
http://HpIC2WsO.wxcsm.cn
http://gOZpdF2g.wxcsm.cn
http://cMs2Q6Vz.wxcsm.cn
http://GE7Fx5rB.wxcsm.cn
http://od3qeyRk.wxcsm.cn
http://apt95zAg.wxcsm.cn
http://www.dtcms.com/a/368799.html

相关文章:

  • 动态规划入门:从记忆化搜索到动态规划
  • 非结构化数据处理:大数据时代的新挑战
  • 城际班车驾驶员安全学习课程
  • Linux系统提权之计划任务(Cron Jobs)提权
  • 大前端数据大屏可视化-适配各种分辨率
  • Java笔记20240726
  • Aspose.Words for .NET 25.7:支持自建大语言模型(LLM),实现更安全灵活的AI文档处理功能
  • 怎样利用AE统计数据优化安防芯片ISP的图像质量?
  • 基于Python读取多个excel竖向拼接为一个excel
  • 深入解析汇编语言的奥秘
  • C++语言程序设计——06 字符串
  • 十二、软件系统分析与设计
  • flink 伪代码
  • AGENTS.md: AI编码代理的开放标准
  • 代码可读性的详细入门
  • 单元测试:Jest 与 Electron 的结合
  • 02-Media-5-mp4demuxer.py 从MP4文件中提取视频和音频流的示例
  • K8s访问控制(一)
  • 动物专家?单词测试!基于 TensorFlow+Tkinter 的动物识别系统与动物识别小游戏
  • 腾讯最新开源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架构,重新定义视频音效新SOTA!
  • GD32入门到实战33--用单片机内部FLASH保护产品参数
  • Python的RSS/Atom源解析库feedparser
  • 抓虫:loongarch64架构selinux强防开启程序执行报错execmod
  • 酷柚易汛ERP 2025-09-05系统升级日志
  • STM32——WDG看门狗
  • Redis 发布订阅:社区的 “通知栏与分类订阅” 系统
  • WordPress性能优化全攻略:从插件实战到系统级优化
  • [新启航]激光频率梳 3D 轮廓测量 - 蓝光机械 3D 扫描的工作原理及优缺点
  • 3DEXPERIENCE平台五大实用技巧指南
  • 彻底搞懂深度学习-模型压缩(减枝、量化、知识蒸馏)