第10章 输入/输出流
I/O(输入/输出)流类库提供对象之间的数据交互服务。
流类库预定义了一批流对象,连接常用的外部设备。
程序员可以定义所需的I/O流对象,使用流类库提供的工作方式实现数据传输。
10.1 流类和流对象
10.2 标志流和流对象
10.3 格式控制
10.4 串流
10.1 流类和流对象
程序中,对数据的输入/输出是以字节流实现的。
应用程序对字节序列作出各种数据解释。
I/O系统的任务就是在内存和外部设备之间稳定可靠地传输数据和解释数据。
流类对象可以建立和删除,可以从流中获取数据和向流添加数据。
10.1.1流类库
流库(stream library)是用继承方法建立的输入输出类库。
流库具有两个平行的基类:streambuf和ios类,所有流类均以两者之一作为基类。
streambuf类提供对缓冲区的低级操作。
设置缓冲区 对缓冲区指针操作 向缓冲区存/取字符
ios类及其派生类提供用户使用流类的接口,支持对streambuf的缓冲区输入/输出的格式化或非格式化转换。
10.2 标志流和流对象
10.2.1标准流
(1)cin istream类的对象,通常连向键盘,可以重定向。
(2)cout ostream类的对象,通常连向显示器,可以重定向。
(3)cerr ostream类的对象,连向显示器,不能重定向。
(4)clog ostream类的对象,连向打印机,不能重定向。
10.3 格式控制
ios提供直接设置标志字的控制格式函数。
iostream和iomanip库还提供了一批控制符简化I/O格式化操作。
int width(int)
返回以前设置显示数据的域宽
char fill(char)
设置填充字符,设置的宽度小时,空余的位置用填充字符来填充,默认条件下是空格。这个函数返回以前设置的填充字符
std::cout.width(20);//设定显示的宽度
std::cout.fill('*');//填充字符
1 #include <iostream> 2 3 void main() 4 { 5 std::cout.width(20);//设定显示的宽度 6 std::cout.fill('*');//填充字符 7 8 std::cout << "hello world" << std::endl; 9 10 system("pause"); 11 }
10.4 串流
串流类是ios中的派生类。
C++的串流对象可以连接string对象或字符串。
串流提取数据时对字符串按变量类型解释;插入数据时把类型数据转换成字符串。
串流I/O具有格式化功能。