[计算机软件及应用]第七章输入输出流.ppt

[计算机软件及应用]第七章输入输出流

第七章 输入输出流 在C++中,输入输出是通过流完成的。C++的输出操作将一个对象的状态转换成一个字符序列,输出到某个地方。输入操作则是从某个地方接收一个字符序列,然后将其转换成一个对象的状态所要求的格式。 把接收存放输出数据的地方叫做目标,把输入数据来自的地方叫做源,输入和输出操作可以看成字符序列在源、目标和对象之间的流动。C++把与输入和输出有关的操作定义为一个类体系,放在一个系统库里,供用户调用。 这个执行输入和输出操作的类体系叫做流类,提供流类实现的系统叫做流类库。 前面的图是简化的流类库的基本类等级图,而不是直接的继承关系图。其实它们都是模板类,箭头表示的是类等级关系。 这个等级关系在头文件iostream.h中说明。在图中,ios类中一个指针成员指向streambuf类的对象。Streambuf类管理流的缓冲区。由于数据隐蔽和封装的需要,普通用户只使用ios、istream和ostream类提供的公有接口,完成流的提取和插入操作。ios类是istream类和ostream类的虚基类,提供对流的格式化I/O操作和错误处理的成员处理 的成员函数。从ios类公有派生出istream类和ostream类分别提供对流进行提取和插入操作的成员函数,而iostream类通过组合istream类和ostream类支持对一个流进行双向操作,它并没有提供新成员函数。 iostream中预定义四个流对象,它们分别是cin、cout、cerr、clog。事实上可以将cin视为istream的一个对象,而cout视为ostream的一个对象。流是一个抽象的概念,当实际进行I/O操作时,必须将流和一个具体的物理设备连接起来。 C++的流类库预定义的四个流所连接的设备如表所示: 流 设备 cin 标准输入设备 cout 标准输出设备 cerr 标准错误输出设备(非缓冲方式) clog 标准错误输出设备(缓冲方式) 与iostream类库有关的头文件 iostream类库中不同的类的声明被放在不同的头文件中,用户在程序中用#include命令包含所需的头文件就相当于在程序中声明了所需的类。 iostream 输入输出流操作 fstream 管理文件的I/O操作 strstream 字符流的I/O操作 stdiostream 混合使用C和C++ iomanip 使用格式化I/O操作 在iostream头文件中重载了 和运算符。用于标准类型数据的输入和输出。 7.2标准输出流 标准输出流是流向标准输出设备的数据。 ostream类定义了cout、cerr和clog三个流对象。 1.cout流对象 cout流在内存开辟一个缓冲区存放流中的数据,当遇到endl时,立即输出流中的所有数据,然后插入一个换行符并清空缓冲区。 2.cerr流对象 cerr流对象是标准出错流。它向标准出错设备输出有关出错的信息。 例7.1 编写程序,从键盘输入a,b,c的值求解一元二次方程。如果a=0或判别式的值0,输出出错信息。 NS流程图 int main() { float a, b, c, disc; cout请输入 a,b,c:; cinabc; if (a==0) cerra 等于0,错误!endl; else if ((disc=b*b-4*a*c)0) cerr判别式b*b-4*a*c0endl; else {coutx1=(-b+sqrt(disc))/(2*a)endl; coutx2=(-b-sqrt(disc))/(2*a)endl; } return 0; } 3.clog流对象 clog流对象也是标准出错流,它与cerr的区别是,cerr不经过缓冲区直接向显示器输出出错信息,clog把出错信息存放在缓冲区,当缓冲区满或遇到endl时向显示器输出出错信息。 7.2.2 格式输出 在输出数据时,如不指定格式,则采用系统给定的默认格式。可以通过控制符或流的成员函数设置输出格式。 1.用控制符设置输出格式 表7.3列出了输出格式的控制符。这些控制符在头文件iomanip中定义。 例7.2 用控制符控制输出格式。 #include iostream #include iomanip using namespace std; int main() {int a; coutinput a:; cina; coutdec:decaendl; couthex:hexaendl; coutoct:setbase(8) aendl; char

文档评论(0)

1亿VIP精品文档

相关文档