一些基本的IO库设施:

iostream头文件没有怎么解决 iostream头文件下载_ios

1.IO类

头文件:

 iostream定义了用于读写的基本类型

 fstream定义了读写命名文件的类型

 sstream定义了读写内存string对象的类型

iostream头文件没有怎么解决 iostream头文件下载_文件流_02


 其中以w开头的类型为支持宽字符wchar_t类型的版本。

  • IO类型间的关系
    概念上,设备类型和字符大小都不会影响我们要执行的IO操作。标准库使我们能忽略不同类型的流之间的差异,这是通过继承机制是实现的。继承机制使我们可以声明一个特定的类继承自另一个类。我们通常可以将一个派生类(继承类)对象当作其基类(所继承的类)对象来使用。如,类型ifstream和istringstream都继承自istream。
    标准库流特性可以无差别地应用于普通流、文件流和string流,以及char或宽字符流版本。

(1)IO对象无拷贝或赋值

 我们不能拷贝或对IO对象赋值,也不能将形参或返回类型设置为流类型。进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。

iostream头文件没有怎么解决 iostream头文件下载_ios_03

(2)条件状态

iostream头文件没有怎么解决 iostream头文件下载_iostream头文件没有怎么解决_04


iostream头文件没有怎么解决 iostream头文件下载_c++_05

  • 查询流的状态
  • 管理条件状态

(3)管理输出缓存

 每个输出流都管理一个缓冲区,用来保存程序读写的数据。有了缓冲机制,允许操作系统将多个输出操作组合为单一的设备写操作可以带来很大的性能提升。

iostream头文件没有怎么解决 iostream头文件下载_iostream头文件没有怎么解决_06

  • 刷新输出缓冲区
  • iostream头文件没有怎么解决 iostream头文件下载_文件流_07

  • unitbuf操纵符
  • iostream头文件没有怎么解决 iostream头文件下载_c++_08

  • 关联输入和输出流
  • iostream头文件没有怎么解决 iostream头文件下载_c++_09

  •  我们既可以将一个istream对象关联到另一个ostream,也可以将一个ostream关联到另一个ostream。

2.文件输入输出

 头文件fstream:

  ifstream:读

  ofstream:写

  fstream:读写

 除了继承自iostream类型的行为之外,fstream中定义了一些新的成员来管理与流关联的文件:

iostream头文件没有怎么解决 iostream头文件下载_ios_10

(1)使用文件流对象

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

iostream头文件没有怎么解决 iostream头文件下载_头文件_11

  • 用fstream代替iostream&
    在要求使用基类型对象的地方,我们可以用继承类型的对象来替代。 所以,接受一个iostream类型引用(或指针)参数的函数,可以用一个对应的istream(或sstream)类型来调用。
  • 成员函数open和close
  • iostream头文件没有怎么解决 iostream头文件下载_iostream头文件没有怎么解决_12

  • 自动构造和析构
  • iostream头文件没有怎么解决 iostream头文件下载_文件流_13

(2)文件模式

iostream头文件没有怎么解决 iostream头文件下载_头文件_14

  • 以out模式打开文件会丢弃已有数据
  • iostream头文件没有怎么解决 iostream头文件下载_c++_15

  • 每次调用open时都会确定文件模式
  • iostream头文件没有怎么解决 iostream头文件下载_iostream头文件没有怎么解决_16

3.string流

 头文件:

  istringstream:读

  ostringstream:写

  stringstream:读写

iostream头文件没有怎么解决 iostream头文件下载_c++_17

(1)使用istringstream
 一些整行文本
 一些行内
(2)使用ostringstream
 逐步构造输出,最后一起打印