一、流类与流对象。
1.基础概念
Ø 程序中,对数据的输入/输出是以字节流实现的
Ø 应用程序对字节序列作出各种数据解释
Ø I/O系统的任务就是在内存和外部设备之间稳定可靠地传输数据 和解释数据。
Ø 流类对象可以建立和删除,可以从流中获取数据和向流添加数据
2.流类库
Ø流类库(stream library)是用继承方法建立的输入输出类库
Ø 流库具有两个平行的基类:streambuf 和 ios 类,所有流类均以两者之一作为基类
Ø streambuf 类提供对缓冲区的低级操作,如 设置缓冲区 对缓冲区指针操作 向缓冲区存/取字符
Ø ios 类及其派生类提供用户使用流类的接口,支持对streambuf 的缓冲区输入/输出的格式化或非格式化转换
3.头文件
Ø iostream.h 包含操作所有输入/输出流所需的基本信息含有cin、cout、cerr、clog对象,提供无格式和格式化的I/O
Ø iomanip.h 包含格式化I/O操纵算子,用于指定数据输入输出的格式
Ø fstream.h 处理文件信息,包括建立文件,读/写文件的各种操作接口
二、标准流和流操作
1.标准流
(1) cin istream 类的对象,通常连向键盘,可以重定向
(2) cout ostream 类的对象,通常连向显示器,可以重定向
(3) cerr ostream 类的对象,连向显示器。不能重定向
(4) clog ostream 类的对象,连向打印机。不能重定向
2.istream类(输入流)
2.1 成员函数及功能
函数 |
功能 |
read istream& read ( char* pch, int nCount ); istream& read ( unsigned char* puch, int nCount ); istream& read ( signed char* psch, int nCount ); |
无格式输入指定字节数 |
get int get(); istream& get( char* pch, int nCount, char delim = '\n' ); istream& get( unsigned char* puch, int nCount, char delim = '\n' ); istream& get( signed char* psch, int nCount, char delim = '\n' ); istream& get( char& rch ); istream& get( unsigned char& ruch ); istream& get( signed char& rsch ); istream& get( streambuf& rsb, char delim = '\n' ); |
从流中提取字符,包括空格 |
getline istream& getline( char* pch, int nCount, char delim = '\n' ); istream& getline( unsigned char* puch, int nCount, char delim = '\n' ); istream& getline( signed char* psch, int nCount, char delim = '\n' ); |
从流中提取一行字符 |
ignore istream& ignore( int nCount = 1, int delim = EOF ); |
提取并丢弃流中指定字符 |
peek int peek(); |
返回流中下一个字符,但不从流中删除 |
gcount int gcount() const; |
统计最后输入的字符个数 |
eatwhite void eatwhite(); |
忽略前导空格 |
seekg istream& seekg( streampos pos ); istream& seekg( streamoff off, ios::seek_dir dir ); |
移动输入流指针 |
tellg streampos tellg(); |
返回输入流中指定位置的指针值 |
operstor>> basic_istream |