1、流,第五章,2,回顾,复制构造函数 复制赋值操作符 类型转换构造函数 类型转换函数,3,目标,输出流 插入操作符 输出操纵符 输入流 提取操作符 输入操纵符,4,输入/输出流的概念 3-1,C+将输入和输出看作字节流 输入来自标准输入设备(键盘),或从其他输入设备重新定向而来 输出发送到标准输出设备或其他输出设备 C+为每一个流关联一个缓冲区,5,输入/输出流的概念 3-2,流是字符集合或数据流的源或目的地有两种流 输出流 输入流,6,输入/输出流的概念 3-3,预定义的流在iostream.h中定义 cin 标准输入流,默认是键盘 cout 标准输出流,默认是屏幕 cerr 标准错误流(非缓
2、冲),默认是屏幕 clog 标准错误流(缓冲),默认是屏幕,7,输出流 7-1,ostream类包含为输出操作定义的函数 标准流上的输出是使用cout对象实现的 插入操作符 ostream类为实现输出重载了操作符 “”,8,输出流 7-2,示例:cout variablename;variablename可以是任何基本数据类型 插入操作符右边的内容到左边的流对象中 屏幕是默认的输出流,9,输出流 7-3,ostream类还提供其他输出函数 put() 输出字符 write() 输出字符串,10,输出流 7-4,输出操纵符提供了格式化数据的简单方法flush() 可用来清空输出缓冲区 cout
3、“C+ 的 I/O 需要刷新。“ flush;endl() 输出一个换行符 cout “C+ 中的 I/O 是不同的。“ endl;precision()函数或setprecision(int d)将精度位数设置为d,默认是6,11,输出流 7-5,width()函数或setw(int w)用于设置输出的字段宽度,默认是0#include void main() cout “默认域宽 = “ cout.width () “n“;cout “;cout.width(10); /将宽度设置为 10cout “A“;cout “ ; ,12,输出流 7-6,fill()函数用于设置填充字符,默认是空
4、格。如果指定的宽度大于实际的输出,C+用空格填充多余的位置#include void main() int amt1 = 100, amt2 = 12345;cout.fill (*); /用 * 填充多余的空间cout “总数 1: “;cout .width(5);cout amt1 “n“;cout “总数 2: “;cout.width (5);cout amt2 “ n“; ,13,输出流 7-7,ios 类包含一个用来控制多种格式特征的函数 setf()setf() 函数使用下列枚举型常量作为参数,必须在它们前面使用类名和作用域解析操作符 (:) showbase - 在输出的八进
5、制数字前加 “0”,在输出的十六进制数字前加 “0x” showpoint - 总是用一个小数点和尾随零显示浮点数 uppercase - 对十六进制的输出使用大写字母 (A-F) showpos - 使用前导“+” 显示正数,14,输入流 5-1,istream 类包含为输入操作定义的函数 来自标准流的输入是使用cin对象实现的 cin与标准输入设备(键盘)相关联 提取操作符 istream 类为实现输入重载了操作符“”,15,输入流 5-2,示例:int variablename;cin variablename;等待用户输入 从键盘的数据将存储在变量variablename,16,输入流
6、 5-3,istream类还提供其他输入函数 get(char &ch) 将输入的字符存储在ch中。它获取输入的下一个字符,即使它是一个空白字符 getline() 类似于get()函数get()和 getline()的区别 get()在输入流中保留换行符,而getline()则从流中提取并丢弃换行符,17,输入流 5-4,输入操纵符 操纵符提供了格式化数据的简单方法skipws - 在提取(“”)时跳过空白字符 cin.unsetf(ios:skipws);,18,输入流 5-5,#include int main() int count = 0;char ch;cin.unsetf(ios:skipws);cin ch;while(ch != .) count+;cin ch;cout endl;cout “共有:“ count “个字符“ endl;return 0; ,19,输入/输出操纵符,设置输入或输出数字的基数 hex - 以十六进制显示整数 oct - 以八进制显示整数 dec - 以十进制显示整数,20,总结,输出流 插入操作符 输出操纵符 输入流 提取操作符 输入操纵符,