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流

相关推荐

  1. c++ primer中文版作业

    2024-05-10 19:36:02       20 阅读
  2. im-system

    2024-05-10 19:36:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 19:36:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 19:36:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 19:36:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 19:36:02       20 阅读

热门阅读

  1. 基于springboot的校园管理系统源码数据库

    2024-05-10 19:36:02       12 阅读
  2. 使用vscode时快速生成console.log()

    2024-05-10 19:36:02       10 阅读
  3. 了解Ansible Playbook

    2024-05-10 19:36:02       10 阅读
  4. 力扣 300. 最长递增子序列 python AC

    2024-05-10 19:36:02       12 阅读
  5. LeetCode hot100-31-G

    2024-05-10 19:36:02       11 阅读
  6. Golang 并发 Mutex 互斥锁的使用

    2024-05-10 19:36:02       12 阅读
  7. SpringBoot笔记

    2024-05-10 19:36:02       8 阅读
  8. Mysql .frm 和 .ibd 文件区别

    2024-05-10 19:36:02       10 阅读
  9. String是最基本的数据类型吗?

    2024-05-10 19:36:02       12 阅读