C++ Primer 第五版 第八章 IO库

一、IO类

C++通过一组定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口等。

IO库定义了读写内置类型值的操作。此外,一些类,如string,通常也会定义类似的IO操作,来读写自己的对象。

一、IO类

iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。

宽字符版本的类型和函数以一个w开始。

类型ifstream和istringstream都继承自istream,因此我们可以像使用istream对象一样来使用ifstream和istringstream对象。类似的,类型ofstream和ostringstream都继承自ostream。

1. IO对象无拷贝或赋值

进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。

2. 条件状态

3. 管理输出缓冲

刷新输出缓冲区

① 操作符endl :完成换行并刷新缓冲区;

② 操作符flush : flush刷新缓冲区,但不输出任何额外的字符;

③ 操作符ends : ends向缓冲区插入一个空字符,然后刷新缓冲区。

unitbuf操作符

关联输入和输出流

tie有两个重载的版本:一个版本不带参数,返回指向输出流的指针。如果本对象当前关联到一个输出流,则返回的就是指向这个流的指针,如果对象未关联到流,即返回空指针。tie的第二个版本接受一个指向ostream的指针,将自己关联到ostream。即,x.tie()&o将流x关联到输出流o。

二、文件输入输出

头文件fstream定义了三个类型来支持文件IO:ifstream从一个给定文件读取数据,ofstream向一个给定文件写入数据,以及fstream可以读写给定文件。

1. 使用文件流对象

当我们想要读写一个文件时,可以定义一个文件流对象,并将对象与文件关联起来。每个文件流都定义了一个名为open的成员函数,它完成一些系统相关的操作,来定位给定的文件,并视情况打开为读或写模式。

文件名既可以是string对象,也可以是C风格字符串数组。

用fstream代替iostream&

成员函数open和close

如果我们定义了一个空文件流对象,可以随后调用open来将它与文件关联起来:

自动构造和析构

2. 文件模式

每个流都有一个关联的文件模式(file mode),用来指出如何使用文件。

以out模式打开文件会丢弃已有数据

每次调用open时都会确定文件模式

三、string流

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值