在C语言中,通常会在采用格式化输入输出函数printf和scanf用于输入或输出数据或信息。在C++语言中,C语言的这一套输入输出库我们仍能使用,但是C++语言又自定义了一套新的、更容易使用的输入输出库。
在C++程序中,输入与输出可以看做是一连串的数据流,输入即可视为从文件或键盘中输入程序中的一串数据流,而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中。
在编写C++程序时,如果需要使用输入输出时,则需要包含头文件iostream。在iostream中定义了用于输入输出的对象,例如常见的cin表示标准输入、cout表示标准输出、cerr表示标准错误。
需要特别强调的是cin、cout、cerr不是C++中的关键字,其本质是函数调用,它们的实现采用的是C++的运算符重载,这些知识点将会在后续逐一介绍。其中cout和cerr的输出目的地都是显示器,但不同的是cout是带有缓冲的,而cerr则不带缓冲。
在我们使用cout进行输出时需要紧接着使用“<<”操作符,使用cin进行输入时需要紧接着使用“>>”操作符,这两个操作符可以自行分析所处理的数据类型,因此无需我们像使用scanf和printf那样设置输入输出格式化语句。
[例1]C++简单的输入输出代码示例:
这段程序的功能是提示用户输入一个整型和一个浮点型数字,然后将其显示在显示器上,这段代码的运行结果如下所示(↙表示用户按下enter键):
Please input an int number:
8↙
The int number is x= 8
Please input a float number:
7.4↙
The float number is y= 7.4
语句cout<<"Please input a int number:"<<endl;表示输出“"Please input a int number:”这样的一段提示话语,让用户知道该输入一个整型数据,其中endl表示换行输出,其功能与C语言里的“\n”相同,在这个程序中我们也可 以用“‘\n’”来替代endl。需要注意的是endl最后一个字母是字母“l”,而非阿拉伯数字“1”,其英文全称为“end of line”。语句cin>>x;表示从标准输入中读入一个int型的数据并存入到x变量中。如果此时用户输入的不是int型数据,则会被强制 转化为int型数据。语句cout<<"The int number is x= "<<x<<endl;则是将输入的整型数据输出,从这句中我们可以看出cout可以连续的输出。同样cin也是支持对多个变量
运行结果:
Please input an int number and a float number:
8 7.4↙
The int number is x= 8
The float number is y= 7.4
在例2中我们用cin>>x>>y;连续从标准输入中读取一个整型和一个浮点型数字,然后分别存入到x和y中。输入操作 符>>在读入下一个输入项前会忽略前一项后面的空格,如例2中,数字8和7.4之间有一个空格,当cin读入8后忽略空格,接着读取7.4。
当使用cin>>val输入变量时,如果输入一个变量到val中,则该表达式返回true,否则返回false。利用这一特性,我们可以连续输入数据,如例3所示。
[例3]使用 cin 连续输入数据:
这个程序从标准输入中不断地读取数据并存入到val变量中,每读入一个数据就求一次和,直至用户输入文件结束符标识时,程序才会输出之前用户输入所有数据之和。