
2.8 输入与输出
计算机与用户进行交互的过程中,数据的输入和输出是必不可少的操作过程。在C语言中,通常会使用函数scanf()、printf()来对数据进行输入输出操作。而在C++语言中,C语言的这一套输入输出库仍然能使用,但是C++又增加了一套新的、更容易使用的输入输出库。
由于输入和输出并不是C++语言中的正式组成成分,并且C和C++本身都没有为输入和输出提供专门的语句结构。所以C++的输入输出发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫作输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫作输出操作。C++的输入输出流程图,如图2-6所示。

图2-6 输入输出流程图
2.8.1 标准输出流cout

预定义的对象cout是iostream类的一个实例。cout对象连接到标准输出设备,通常是显示屏。cout是与流插入运算符“<<”结合使用的。
【例2-5】编写程序,完成一个数据的输出。
(1)在Visual Studio 2017中,新建名称为“2-5.cpp”的Project5文件。
(2)在代码编辑区域输入以下代码。

【程序分析】本程序定义了一个int型变量a并赋值为5,和一个float型变量b,赋值为3.5。
在Visual Studio 2017中的运行结果如图2-7所示。

图2-7 标准输出流cout
2.8.2 标准输入流cin

预定义的对象cin是iostream类的一个实例。cin对象附属到标准输入设备,通常是键盘。cin是与流提取运算符“>>”结合使用的,如下所示:
【例2-6】编写程序,完成一个数据的输入。
(1)在Visual Studio 2017中,新建名称为“2-6.cpp”的Project6文件。
(2)在代码编辑区域输入以下代码。

【程序分析】本程序定义了两个变量,一个是int型的a,另一个是float型的b。然后通过cin为这两个变量赋值并输出。
在Visual Studio 2017中的运行结果如图2-8所示。

图2-8 标准输入流cin
C++中的输入与输出可以看作是一连串的数据流,输入即可视为从文件或键盘中输入程序中的一串数据流,而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中。
在编写C++程序时,如果需要使用输入输出时,则需要包含头文件iostream,它包含了用于输入输出的对象,例如常见的cin表示标准输入、cout表示标准输出、cerr表示标准错误。
注意:iostream是Input Output Stream的缩写,意思是“输入输出流”。
cout和cin都是C++的内置对象,而不是关键字。C++库定义了大量的类(Class),开发者可以使用它们来创建对象,cout和cin就分别是ostream和istream类的对象,只不过它们是由标准库的开发者提前创建好的,可以直接拿来使用。这种在C++中提前创建好的对象称为内置对象。
使用cout进行输出时需要紧跟“<<”运算符,使cin进行输入时需要紧跟“>>”运算符,这两个运算符可以自行分析所处理的数据类型,因此无须像使用scanf和printf那样给出格式控制字符串。
注意:endl最后一个字符是字母“l”,而非阿拉伯数字“1”,它是end of line的缩写。
【例2-7】编写程序,同时输入一个整数和小数。
(1)在Visual Studio 2017中,新建名称为“2-7.cpp”的Project7文件。
(2)在代码编辑区域输入以下代码。

【程序分析】在程序的第8行代码表示从标准输入(键盘)中读入一个int型的数据并存入到变量a中。如果此时用户输入的不是int型数据,则会被强制转化为int型数据。在第9行代码将输入的整型数据输出。从该语句中我们可以看出cout能够连续地输出。同样cin也是支持对多个变量连续输入的。
在Visual Studio 2017中的运行结果如图2-9所示。

图2-9 输入整数和小数