8.1 IO类

iostream                    istream, wistream从流中读取数据

ostream, wostream

iostream, wiostream读写流

fstream                      ifstream, wifstream从文件中读取数据

ofstream, wofstream

fstream, wfstream读写文件

sstream                      istringstream, wistringstream从string中读取数据

ostringstream, wostringstream

stringstream, wstringstream读写string

为了支持宽字符wchar_t,所有的类型和函数只要以w开始就行。例如:wcin、wcout、wifstream。

8.1.1 IO对象无拷贝或赋值

ofstream out1, out2;

out1=out2;//错误,不能赋值和拷贝

由于不能赋值拷贝,所以不能将形参和返回值设置为流类型,通常必须使用引用方式传递和返回流。而且读写IO对象会改变对象状态,所以不能是const。

8.1.2 流的状态

可以通过流对象的rdstate成员函数返回一个iostate类型的值,表征流的当前状态。

    1. badbit,流崩溃
    2. failbit,IO操作失败
    3. eofbit,文件尾
    4. goodbit,没有错误

使用setstate函数可以将一个iostate的状态值设置为流的状态,对于已经有错误的流,使用good函数仍返回false。

使用无参的clear函数复位所有错误标识,执行clear()后,调用good返回true.

可能用到的函数:eof、fail、bad、good

8.1.3 管理输出缓冲

Endl可以完成换行,并刷新缓冲区。

cout << unitbuf;        //所有输出操作都会立即刷新缓冲区

cout << nounitbuf;   //将缓冲区刷新任务交给系统

 

将输入流关联到输出流

使用tie函数可以讲一个输出流,关联到输入流,并返回原来关联的输出流。

cin.tie(&cout);

不带参数的tie函数返回输入流关联的输出流。

8.2 文件输入输出

fstream

fstream fstrm(filePath);

fstream fstrm;

fstrm.open(filePath, mode);

fstrm.is_open();//检验是否成功打开是个好习惯

fstrm.close();

当一个fstream对象离开作用域时,与之关联的文件自动关闭。

Mode

只读:in

只写:out

每次写操作前定位到文件尾部:app

打开文件后定位到文件尾部:ate

截断文件:trunc

二进制方式进行IO:binary

注意:

    1. 每次调用open,都需要重新制定文件模式,否则为默认默认。
    2. out打开文件,文件从开头截断,为保留文件中的内容,应该同时指定为app
    3. 设定trunc,必须设定out:ofstream::out | ofstream::trunc
    4. 设定app,不能有trunc

8.3 string流

<sstream>头文件中

sstream strm;//未绑定的stringstream对象

sstream strm(s);//保存string s的一个拷贝

strm.str();//返回strm保存的string拷贝

strm.str(s);//将s拷贝到strm中,返回void

istringstream

将string类型通过istringstream当做流进行处理。

ostringstream

将其他流写入到ostringstream流中,可以相当于向string添加字符。

第8章 IO类的更多相关文章

  1. File类与常用IO流第四章——IO字节流

    一切文件在存储时,都是以二进制数字的形式保存的,都是一个一个字节.无论使用什么样的流对象,底层传输的始终是二进制数据. 字节输出流 OutputStream java.io.OutputStream ...

  2. 第 8 章 IO库

    第 8 章 IO库 标签: C++Primer 学习记录 IO库 第 8 章 IO库 8.1 IO类 8.2 文件输入输出 8.1 string流 8.1 IO类 IO对象无拷贝或赋值,因此不能将形参 ...

  3. 第15章 LinkedList类(暂无)

    第15章 LinkedList类 LinkedList类是

  4. 第9章 Java类的三大特性之一:继承

    1.什么是继承 子类继承父类就是对父类的扩展,继承时会自动拥有父类所拥有的处private之外的所有成员作用:增加代码复用语法格式: class 子类名 extends 父类名{…………}第9章 Ja ...

  5. 第8章 Java类的三大特性之一:封装

    1.什么是封装 1.1概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.主要是类的属性 1.2好处 a.只能通过规定的方法访问数据b.隐藏类 ...

  6. C++的那些事:流与IO类

    1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...

  7. C++ Primer 5th 第8章 IO库

    IO类对象不允许进行拷贝操作. IO类中定义后一些函数和标志,可以用于访问和操作流的状态. 一旦流发生错误,后续IO操作都是失败的. 读写IO对象会改变IO对象的状态. 每个输出流都管理一个缓冲区. ...

  8. 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法

    装饰者模式(Decorator Pattern) Java的IO类 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716 ...

  9. Java基础知识二次学习--第六章 常用类

    第六章 常用类   时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...

随机推荐

  1. 读取txt文件将文本行组合成特定格式

    有一网友要求从txt文本文件读取一些数据,然后组合为特定格式的数据行.原论题如下,刚才开始的要求描述得不太清楚,后来补充完整了. Insus.NET觉得本论题可有练习文本件读取功力,因此尝试实现一下. ...

  2. 多线程学习-基础(五)sleep()和yield()的区别(理论)

    一.sleep()和yield()的区别 (1)sleep()使当前线程进入停滞状态(即阻塞状态),所以执行sleep()的线程在指定的时间内不会被执行: (2)yield()只是使当前线程从运行状态 ...

  3. RGB转灰度的几种算法

    这里我用的摄像头是OV2640,这款摄像头的像素是200万.通过对摄像头拍摄图像的进行图像的转化,先把图像的格式转化为RGB565,然后在进行灰度的转化,最后进行二值化处理,设定阈值,进行二值化的处理 ...

  4. Cactus在jexus上安装

    在成功安装完Mono和jexus后(强烈建议Mono 4.2.1以上,jexus 5.6.1 以上,本人测试环境就是Mono 4.2.1和jexus 5.6.1) 第一步: 先配置jexus安装目录下 ...

  5. 学习高性能mysql

    Mysql 的InnoDB存储引擎实现的不是简单的行级锁,实现的是MVCC,多版本并发控制,可以理解成行级锁的一个变种. InnoDB的MVCC是通过在每行纪录后面保存两个隐藏的列来实现的.这两个列, ...

  6. v-touch使用方法以及在项目中遇到的问题

    上篇博客中我记得还有一个坑没有解决好,在这篇博客中详细说明一下. 在 https://github.com/dreamITGirl/vuepageturn 我的这个代码库里,更新到2.1版本. 目前解 ...

  7. City Game UVALive - 3029(悬线法求最大子矩阵)

    题意:多组数据(国外题好像都这样),每次n*m矩形,F表示空地,R表示障碍 求最大子矩阵(悬线法模板) 把每个格子向上延伸的空格看做一条悬线 以le[i][j],re[i][j],up[i][j]分别 ...

  8. Windows多个应用程序共享全局变量,静态变量

    默认情况下exe不同实例使用copy-on-write技术避免共享数据,比如运行了两个exe,最开始它们使用的都是一份虚拟内存页,然后第一个实例修改了全局变量, 这时候COW就会复制那一页,然后将第一 ...

  9. c#静态变量赋值问题

    class Program { static int i = getNum(); int j = getNum(); ; static int getNum() { return num; } sta ...

  10. vue.js路由嵌套

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...