上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。另外,像 XML、HTML 这种,虽然也是文本文件,可以由QTextStream生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括这部分内容了。

QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对开发人员是透明的。它也会将换行符进行转换,同样不需要自己处理。QTextStream使用 16 位的QChar作为基础的数据存储单位,同样,它也支持 C++ 标准类型,如 int 等。实际上,这是将这种标准类型与字符串进行了相互转换。

QTextStream同QDataStream的使用基本一致,例如下面的代码将把“The answer is 42”写入到 file.txt 文件中:

QFile data("file.txt");
if (data.open(QFile::WriteOnly | QIODevice::Truncate)) {
QTextStream out(&data);
out << "The answer is " << 42;
}
  • 1
  • 2
  • 3
  • 4
  • 5

这里,我们在open()函数中增加了QIODevice::Truncate打开方式。我们可以从下表中看到这些打开方式的区别:

枚举值 描述
QIODevice::NotOpen 未打开
QIODevice::ReadOnly 以只读方式打开
QIODevice::WriteOnly 以只写方式打开
QIODevice::ReadWrite 以读写方式打开
QIODevice::Append 以追加的方式打开,新增加的内容将被追加到文件末尾
QIODevice::Truncate 以重写的方式打开,在写入新的数
QIODevice::Text 在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n
QIODevice::Unbuffered 忽略缓存

我们在这里使用了QFile::WriteOnly | QIODevice::Truncate,也就是以只写并且覆盖已有内容的形式操作文件。注意,QIODevice::Truncate会直接将文件内容清空。

虽然QTextStream的写入内容与QDataStream一致,但是读取时却会有些困难:

http://blog.csdn.net/u013007900/article/details/46459735

最新文章

  1. 选择列表中除了第一个li的其他元素
  2. Getting Started with Blocks
  3. socket详解
  4. C#调用百度地图API经验分享(一)
  5. C#中相对路径转换为绝对路径的方法
  6. Save a bricked Samsung Note 3 and do extraction
  7. erlang 基础知识
  8. BOM/ROUTING/PO/WIP等模块常用查询
  9. TRSWCM学习问题总结
  10. C++中使用stringstream简化类型转换
  11. PHP CI框架下,如果配置NGINX(根目录和子目录两种模式)
  12. Android studio多个项目之间怎么实现快速切换?
  13. objective-C 初识
  14. 微信公众平台消息接口PHP版开发教程
  15. markdown实现
  16. 如何验证所做的AIX系统备份是否可用
  17. JS for循环小题2
  18. postgresql drop表后空间不释放
  19. 自学Aruba集锦
  20. 如何有效的报告bug?

热门文章

  1. HDU 1051 Wooden Sticks (贪心)
  2. MYSQL++之Connect类型
  3. 五毛的cocos2d-x学习笔记06-处理用户交互
  4. 小猪猪逆袭成博士之C++基础篇(一)数据精度、强制类型转换、变量命名规则
  5. Ajax学习之小结
  6. Mongodb备份(mongodump)和恢复(mongorestore)
  7. [LeetCode]题解(python):129-Sum Root to Leaf Numbers
  8. c 语言 指针 与地址
  9. IOS 学习笔记(4) 控件 标签(UILabel)的使用方法
  10. ElasticSearch基本用法