一、IOStream简介
ISStream类具有处理格式化显示的技术。
下面介绍:
- stream对象
- stream类别
- stream类的操作符
1.stream对象
1.输入流和输出流对象
- c++ I/O由stream完成。
- stream是某个类别定义出来具有特定性质的对象
- c++流被实现为模板
- std::cin和ctd::cout是std::ios派生出来的全局实例对象
C++的iostream类库的一些细节,例如:在程序中包含iostream头文件,将自动创建8个stream对象(4个用于窄字符,4个用于宽字符):
- cin对象对应标准的输入stream:默认情况下stream被关联到标准输入设备(键盘)。wcin:类似,处理的是宽字符wchar_t类型。
- cout对象对应标准的输出stream:默认被关联到标准输出设备(显示器)。wcout:类似,处理得是wchar_t类型。
- cerr对象对应标准错误stream:默认情况被关联到标准输出设备。这个stream没有缓冲,则信息直接被发往屏幕。wcerr:类似,处理wchar_t类型。
- clog对象对应标准错误stream: 默认情况被关联到标准输出设备。这个stream有缓冲。wclog:类似,处理wchar_t类型。
2.文件流对象
文件流对象用于文件操作。程序需要实例化文件流类的对象。文件流类包括:
- ofstream:输出
- ifstream: 输入
- fstream : 输入和输出
2.stream类别
对于不同的I/O,对于不同的stream类,其中最重要的是:
- class istream : 定义input stream, 用来读取数据;
- class ostream : 定义Output stream , 用来输出数据;
- fstream: 文件的输入与输出
1.istream类和ostream类
两个来自模板:
typedef basic_istream<char> istream;
typedef basic_ofstream<char> ofstream;
IOStream程序库顶一个istream和ostream的全局对象,前面已说过:
- cin: 对应标准stream : cstdin
- cout: 对应 cstdcout
- cerr: 对应 cstderr
clog: 标准日志通道,没有对应物,操作系统将他连接到cerr连接的装置,clog设有缓冲。
- “正常输出”和“错误信息的输出”需要分离。
- std::ostream类使用重载“<<”来输出
- std::istream类使用重载“>>”来读取输入
2.fstream类
文件操作输入和输出方式和处理标准输入和输出方式类似,
1. 写出文件:首先创建一个ofstream对象,并使用ostream方法,如“<<”或者write()方法。
2. 读取文件:首先创建一个ifstream对象,使用istream方法,如“>>”或者get().
3.stream操作符
operator<<
和operator>>
被相应的stream类重载,分别用于输入和输出。
4.操控器(操纵符)(Manipulators)
大部分输出语句的最后,会写一个被称为操控器的东西,如std::endl;操控是专门用来操控stream的对象,仅仅改变输入和格式化输出的方式。
例如:
- endl : 输出换行符’\n’,刷新output缓冲区
iostream中还有一些其他操控器,如: ends,flush,ws:
- ends: 输出’\0’
- flush : 刷新缓冲区
这几个都是属于ostream类
- ws: 属于istream类,读入并忽略空格。