Version 3.0
流第五章
2
回顾
复制构造函数
复制赋值操作符
类型转换构造函数
类型转换函数
3
目标
输出流
– 插入操作符
– 输出操纵符
输入流
– 提取操作符
– 输入操纵符
4
输入 /输出流的概念 3-1
C++将输入和输出看作字节流
输入来自标准输入设备(键盘),或从其他输入设备重新定向而来
输出发送到标准输出设备或其他输出设备
C++为每一个流关联一个缓冲区
5
输入 /输出流的概念 3-2
流是字符集合或数据流的源或目的地
有两种流
– 输出流
– 输入流
6
输入 /输出流的概念 3-3
预定义的流在 iostream.h中定义
– cin 标准输入流,默认是键盘
– cout 标准输出流,默认是屏幕
– cerr 标准错误流(非缓冲),默认是屏幕
– clog 标准错误流(缓冲),默认是屏幕
7
输出流 7-1
ostream类包含为输出操作定义的函数
标准流上的输出是使用 cout对象实现的
插入操作符
– ostream类为实现输出重载了操作符,<<”
8
输出流 7-2
示例:
cout << variablename;
variablename可以是任何基本数据类型
插入操作符右边的内容到左边的流对象 中
屏幕是默认的输出流
9
输出流 7-3
ostream类还提供其他输出函数
– put() – 输出字符
– write() – 输出字符串
10
输出流 7-4
输出操纵符提供了格式化数据的简单方法
– flush() 可用来清空输出缓冲区
cout << "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 <iostream.h>
void main()
{
cout << "默认域宽 = " << cout.width () << "\n";
cout << "[";
cout.width(10); //将宽度设置为 10
cout << "A";
cout << "]" ;
}
12
输出流 7-6
– fill()函数用于设置填充字符,默认是空格。如果指定的宽度大于实际的输出,C++用空格填充多余的位置
#include <iostream.h>
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 - 在输出的八进制数字前加,0”,在输出的十六进制数字前加,0x”
showpoint - 总是用一个小数点和尾随零显示浮点数
uppercase - 对十六进制的输出使用大写字母 (A-F)
showpos - 使用前导,+” 显示正数
14
输入流 5-1
istream 类包含为输入操作定义的函数
来自标准流的输入是使用 cin对象实现的
cin与标准输入设备(键盘)相关联
提取操作符
– istream 类为实现输入重载了操作符,>>”
15
输入流 5-2
示例:
int variablename;
cin >> variablename;
等待用户输入
从键盘的数据将存储在变量 variablename
16
输入流 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 <iostream.h>
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
总结
输出流
– 插入操作符
– 输出操纵符
输入流
– 提取操作符
– 输入操纵符
流第五章
2
回顾
复制构造函数
复制赋值操作符
类型转换构造函数
类型转换函数
3
目标
输出流
– 插入操作符
– 输出操纵符
输入流
– 提取操作符
– 输入操纵符
4
输入 /输出流的概念 3-1
C++将输入和输出看作字节流
输入来自标准输入设备(键盘),或从其他输入设备重新定向而来
输出发送到标准输出设备或其他输出设备
C++为每一个流关联一个缓冲区
5
输入 /输出流的概念 3-2
流是字符集合或数据流的源或目的地
有两种流
– 输出流
– 输入流
6
输入 /输出流的概念 3-3
预定义的流在 iostream.h中定义
– cin 标准输入流,默认是键盘
– cout 标准输出流,默认是屏幕
– cerr 标准错误流(非缓冲),默认是屏幕
– clog 标准错误流(缓冲),默认是屏幕
7
输出流 7-1
ostream类包含为输出操作定义的函数
标准流上的输出是使用 cout对象实现的
插入操作符
– ostream类为实现输出重载了操作符,<<”
8
输出流 7-2
示例:
cout << variablename;
variablename可以是任何基本数据类型
插入操作符右边的内容到左边的流对象 中
屏幕是默认的输出流
9
输出流 7-3
ostream类还提供其他输出函数
– put() – 输出字符
– write() – 输出字符串
10
输出流 7-4
输出操纵符提供了格式化数据的简单方法
– flush() 可用来清空输出缓冲区
cout << "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 <iostream.h>
void main()
{
cout << "默认域宽 = " << cout.width () << "\n";
cout << "[";
cout.width(10); //将宽度设置为 10
cout << "A";
cout << "]" ;
}
12
输出流 7-6
– fill()函数用于设置填充字符,默认是空格。如果指定的宽度大于实际的输出,C++用空格填充多余的位置
#include <iostream.h>
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 - 在输出的八进制数字前加,0”,在输出的十六进制数字前加,0x”
showpoint - 总是用一个小数点和尾随零显示浮点数
uppercase - 对十六进制的输出使用大写字母 (A-F)
showpos - 使用前导,+” 显示正数
14
输入流 5-1
istream 类包含为输入操作定义的函数
来自标准流的输入是使用 cin对象实现的
cin与标准输入设备(键盘)相关联
提取操作符
– istream 类为实现输入重载了操作符,>>”
15
输入流 5-2
示例:
int variablename;
cin >> variablename;
等待用户输入
从键盘的数据将存储在变量 variablename
16
输入流 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 <iostream.h>
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
总结
输出流
– 插入操作符
– 输出操纵符
输入流
– 提取操作符
– 输入操纵符