2.2.1 标准的输入和输出对象
iostream类库定义了4个最基本的输入/输出(I/O)对象,其中最常用的是cin对象和cout对象。cin对象用来处理标准输入,即键盘输入;cout用来处理标准输出,即屏幕输出。另外,类库还定义了两个输出对象,分别是cerr和clog。cerr对象用来处理标准的错误,典型情况下用于生成警告或错误消息;clog对象用于生成程序的执行信息。
有了输入对象和输出对象,就可以通过预定义的插入符"<<"和提取符">>"向流中插入数据或者提取数据。例如,可以使用"<<"插入符向cout对象中插入数字或者字符串,将其显示到屏幕上:
- cout<<1; // 向输出对象中插入数值1
- cout<<"Hello World!"; // 向输出对象中插入字符串"Hello World!"
- cout<<"1 + 2 = "<<11+2; // 向输出对象中插入
字符串"1 + 2 ="以及1+2的计算结果
第一句中的插入符将数字"1"插入输出对象中,这样就会在屏幕上显示数字1。同理,第二句会在屏幕显示一个字符串"Hello World!"。最后一条语句中,第一个插入符首先将"1+2="这个字符串数据插入输出对象,然后计算"1+2"的值,最后将计算结果"3"插入输出对象,最终显示在屏幕上的就是"1 + 2 = 3"。
对于输入对象cin,可以使用提取符">>"从cin输入流中获取用户输入的数据。例如:
- // 用于保存用户输入数据的变量
- int nAge;
- string strName;
- // 从输入对象cin中提取用户输入的整数数据和字符串数据,
- // 分别保存到nAge和strName变量中
- cin>>nAge>>strName;
在这里,首先定义了两个变量,分别用于保存用户输入的整数数据和字符串数据。然后,利用提取符">>"从输入对象cin中提取用户输入的数据并分别保存到相应的变量中,这样就完成了数据从键盘到应用程序的输入。
下面再来看一个输入和输出配合使用的实例。
- #include "stdafx.h"
- // 引入定义输入/输出流对象的头文件
- #include <iostream>
- // 引入std名字空间
- using namespace std;
-
- int _tmain(int argc, _TCHAR* argv[])
- {
- // 在屏幕上输出提示信息
- cout<< "请输入两个整数:" <<endl;
- int v1, v2;
- // 从输入对象提取用户输入的整数
- cin>> v1 >> v2;
- // 将计算结果输出到屏幕
- cout<< "两个整数" << v1 << "和" << v2
- << "的和是" << v1 + v2 <<endl;
-
- return 0;
- }
通过简单的输入/输出,该程序实现了加法计算功能。下面来分析一下这个程序,看看它是如何实现数据的输入和输出的。程序的第1行和第2行是预编译指令,其中第1行是由IDE自动产生的,不必在意。这里要详细介绍的是第2行:
- #include <iostream>
这条预编译指令把iostream文件引入当前文件中,因为需要用到的cout和cin对象定义在这个文件中。只有引入这个文件,才能在程序中使用cout和cin对象。当然,还需要使用std这个名字空间,否则当编译器找不到相应的标识符时会产生编译错误。
接下来从主函数_tmain()开始,分析程序的执行过程。
- cout<< "请输入两个整数:" <<endl;
这条语句首先将字符串"请输入两个整数:"插入输出对象cout中,然后插入一个特殊值endl,这个特殊值称为操纵符,稍后将介绍更多的操纵符。endl操纵符的作用就是输出换行符,并且刷新输出缓冲器,确保用户立即看到已经插入输出流的信息。
显示提示信息后,下一步需要做的是接收用户的输入。为了保存用户输入的数据,先定义两个整型变量v1和v2:
- int v1, v2;
然后,开始使用输入流对象cin来获取用户的输入:
- cin>> v1 >> v2;
程序运行到这里会停止,等待用户输入。输入两个数,然后回车表示输入完成。读取符">>"会从输入流中读取这两个数,然后分别保存到v1和v2中。
获取数据之后,就可以开始运算并向用户输出运算结果了:
- cout<< "两个整数" << v1 << "和" << v2
- << "的和是" << v1 + v2 <<endl;
这条语句将提示字符串和变量v1、v2的值,以及加法运算表达式的计算结果值插入输出流,最终在屏幕上显示计算结果,完成数据的输出。