C++IO类,输入输出缓冲区,流状态

本文详细介绍了C++编程中的IO库,包括iostream、fstream和sstream的不同作用,以及它们与控制台、文件和内存操作的关联。讲解了流对象的使用、错误处理、条件状态管理、输出缓冲刷新、关联输入输出流和tie函数等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的程序已经使用了很多IO库设施:

  • istream(输入流)类型,提供输入操作。
  • ostream(输出流)类型,提供输出操作。
  • cin,一个istream对象,从标准输入读取数据。写入到标准错误。
  • cout,一个ostream对象,向标准输出写入数据。
  • cerr,一个ostream对象,通常用于输出程序错误消息,
  • >>运算符,用来从一个istream对象读取输入数据。
  • <<运算符,用来向一个ostream对象写入输出数据。
  • getline函数,从一个给定的istream读取一行数据,存入一个给定的string对象中。

 IO类

到目前为止,我们已经使用过的IO类型和对象都是操纵char数据的。

默认情况下,这些对象都是关联到用户的控制台窗口的。

当然,我们不能限制实际应用程序仅从控制台窗口进行IO操作,应用程序常常需要读写命名文件。而且,使用IO操作处理string中的字符会很方便。此外,应用程序还可能读写需要宽字符支持的语言。

为了支持这些不同种类的IO处理操作,在istream和ostream之外,标准库还定义了其他一些IO类型,我们之前都已经使用过了。

下表列出了这些类型,分别定义在三个独立的头文件中:

  • iostream定义了用于读写流的基本类型,
  • fstream定义了读写命名文件的类型,
  • sstream定义了读写内存string对象的类型。
IO库类型和头文件
头文件 类型
iostream istream, wistream从流读取数据
ostream, wostream向流写入数据
iostream, wiostream读写流
fstream ifstream,wifstream从文件读取数据
ofstream, wofstream向文件写入数据
fstream,wfstream读写文件
sstream istringstream,wistringstream从string读取数据
ostringstream, wostringstream向string写入数据
stringstream, wstringstream读写string

 为了支持使用宽字符的语言,标准库定义了一组类型和对象来操纵 wchar_t类型的数据。宽字符版本的类型和函数的名字以一个w开始。

例如,wcin、 wcout 和wcerr是分别对应cin、cout 和cerr的宽字符版对象。宽字符版本的类型和对象与其对应的普通char版本的类型定义在同一个头文件中。

例如,头文件fstream定义了ifstream和wifstream类型。

IO类型间的关系

概念上,设备类型和字符大小都不会影响我们要执行的操作。

例如,我们可以用>>读取数据,而不用管是从一个控制台窗口,一个磁盘文件,还是一个string读取。类似的,我们也不用管读取的字符能存入一个char对象内,还是需要一个wchar_t对象来存储。

标准库使我们能忽略这些不同类型的流之间的差异,这是通过继承机制实现的。

利用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值