zoukankan      html  css  js  c++  java
  • QT学习 之 文本文件读写

    上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用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 在读取时,将行结束符转换成 ;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是
    QIODevice::Unbuffered 忽略缓存

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

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

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

  • 相关阅读:
    【转载】WinCE编译一二三
    Implement the OEM Power Management on Windows CE
    ubuntu 精简系统
    simple awk tutorial
    debian 安装备份已安装软件包
    awk 简单教程
    Unix Sed Tutorial: Advanced Sed Substitution Examples
    dos修改子文件夹所有文件文件名
    Using Intel MKL with MATLAB Matlab使用多核CPU
    [转]学校的统一订书80%该烧掉——IT推荐书单
  • 原文地址:https://www.cnblogs.com/findumars/p/5107678.html
Copyright © 2011-2022 走看看