文章目录

  • QTextStream 的简单理解
    • QTextStream类提供了使用QIODevice读写文本的基本功能。
    • 还有一种通常的用法就是控制台命令的读写
    • 除了QTextStream的构造函数,还要常用的一些方法
    • 通常有三种方式来读文本文件
  • Qt提供了几个和iostream相似的全局函数:

QTextStream 的简单理解

QTextStream类提供了使用QIODevice读写文本的基本功能。

QTextStream可以操作QIODevice上,支持QByteArray和QString。如果使用QTextStream的operators,可以方便的读写words,lines 和numbers. 对一般的文本,QTextStream支持格式化对齐,格式化数字 等。例如

QFile data(“output.txt”);
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
}

还有一种通常的用法就是控制台命令的读写

,例如:

QTextStream stream(stdin);
QString line;
while (stream.readLineInto(&line)) {

}

除了QTextStream的构造函数,还要常用的一些方法

,例如:
setDevice() : 设置设备
setString(): 设置字符串
seek():查找位置
atEnd():返回是否还有数据可读
flush():清空写缓存区

QTextStream 使用的是Unicode 缓存,Qt中的QTextCodec类 可以支持各种字符集。

通常有三种方式来读文本文件

  • chunk By chunk(块读):readLine()和readAll()
  • Word By Word(按字读):
  • character By character(按字节读):

Qt提供了几个和iostream相似的全局函数:

bin设置QTextStream来读/写二进制数字
-oct设置QTextStream来读/写八进制数字
-dec设置QTextStream来读/写十进制数字
-hex设置QTextStream来读/写十六进制数字
-endl强制换行
-flush强制QIODevice刷新任何被缓存的数据
-ws作为任何可用的控制符(在输入的时候)
-reset重新设置QTextStream为它的缺省模式(请见reset())
-qSetW(int)设置字段宽度作为指定参数
-qSetFill(int)设置填充字符作为指定参数
-qSetPrecision(int)设置精确度作为指定参数

简单示例:

include <QCoreApplication>
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//写入文件QFile myFile("log.txt");if(!myFile.open(QIODevice::WriteOnly)){qDebug()<<myFile.errorString();}QTextStream textStream(&myFile);textStream<<"this is   first line.\r\n";textStream<<"this is second line.\r\n";textStream<<"this is third line.\r\n";textStream.flush();myFile.close();//读取文件if(!myFile.open(QIODevice::ReadOnly)){qDebug()<<myFile.errorString();}textStream.setDevice(&myFile);while(!textStream.atEnd()){QString str1 = textStream.readLine();//每次读取一行qDebug()<<str1;}textStream.seek(0);QString strAll = textStream.readAll();//全部读取qDebug()<<strAll;//每一次读取一个单词,过滤掉空格textStream.seek(0);while(!textStream.atEnd()){QString str;textStream>>str;qDebug()<<str;}//每一次读取一个字节textStream.seek(0);while(!textStream.atEnd()){textStream.skipWhiteSpace();QString str = textStream.read(1);qDebug()<<str;}myFile.close();return a.exec();
}

QTextStream 的简单理解相关推荐

  1. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  2. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  3. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  4. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  5. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  6. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

  7. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区

    每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...

  8. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  9. QGraphicsScene 的简单理解--关于手册的简要翻译

    文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...

最新文章

  1. 几种常用的图像处理函数库
  2. const与#define的异同
  3. 主题mysql_主题数据库(SubjectBase)
  4. c语言复制粘贴源码,c语言函数memccpy()如何复制内存中的内容实例源码介绍
  5. 【机器学习基础】机器学习理论最佳入门!周志华宝箱书搭档,开源教程《钥匙书-KeyBook》发布...
  6. python数据驱动ddt_python_数据驱动_ddt
  7. Kettle使用_31 CSV文件输入跳过前几(首)行之过滤记录
  8. 从Zero到Hero,一文掌握Python关键代码
  9. popwindow setFocusable(false) 不消失与弹出软键盘的冰火不容的矛盾
  10. 只读事务上下文_我可以/应该在事务上下文中使用并行流吗?
  11. Xshell 的基本使用
  12. 插值法补齐缺失数据_数据处理——缺失值处理
  13. linux普通用户id一般是,实际用户ID和有效用户ID (一) *****
  14. MySQL触发器自动更新memcache[转]
  15. 计算机桌面的照度,学校建筑实验室实验桌面照度标准值?
  16. 更新i40e网卡驱动程序
  17. java打包时打入本地依赖包
  18. POSTGRESQL通过身份证号码筛选年龄的两种方式
  19. 雷达(微波)感应天线设计
  20. SQL查询本周过生日的同学,和下周过过生日的同学

热门文章

  1. Centos启动和禁用网卡命令
  2. 二叉树的相关性质及其前中后层序遍历实现
  3. [云炬python3玩转机器学习笔记] 3-2 Jupter Notebook魔法命令
  4. 机械设计基础第一章绪论精选习题(全覆盖,无死角版)2018-01-06
  5. linux 切换用户_Linux 用户态切换到内核态的 3 种方式
  6. VTK修炼之道58:图形基本操作进阶_点云配准技术(迭代最近点ICP算法)
  7. 独立成分分析ICA系列4:ICA的最优估计方法综述
  8. 大话数据结构:线性表(2)
  9. jar包 热加载/卸载 的初步实现
  10. C++编程对缓冲区的理解