![C++ 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/805/26846805/b_26846805.jpg)
2.8 输入与输出
计算机与用户进行交互的过程中,数据的输入和输出是必不可少的操作过程。在C语言中,通常会使用函数scanf()、printf()来对数据进行输入输出操作。而在C++语言中,C语言的这一套输入输出库仍然能使用,但是C++又增加了一套新的、更容易使用的输入输出库。
由于输入和输出并不是C++语言中的正式组成成分,并且C和C++本身都没有为输入和输出提供专门的语句结构。所以C++的输入输出发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫作输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫作输出操作。C++的输入输出流程图,如图2-6所示。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P35_6466.jpg?sign=1738888261-w8cLZoORkXmCNprOSbAcjsUR18YPLljh-0-a920a3a7f4cd7992869692dccf3cd49e)
图2-6 输入输出流程图
2.8.1 标准输出流cout
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P35_6471.jpg?sign=1738888261-jXHh3Yqh8o4aUQT7V36LZxaXGLsDsOKw-0-c86860bcd18c9c5bdedf128153247593)
预定义的对象cout是iostream类的一个实例。cout对象连接到标准输出设备,通常是显示屏。cout是与流插入运算符“<<”结合使用的。
【例2-5】编写程序,完成一个数据的输出。
(1)在Visual Studio 2017中,新建名称为“2-5.cpp”的Project5文件。
(2)在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P36_6648.jpg?sign=1738888261-mAc01f2lBgx27slRkqXhaMauOncDiHqT-0-9dc4266e702b016e3d1fdcfdf6684355)
【程序分析】本程序定义了一个int型变量a并赋值为5,和一个float型变量b,赋值为3.5。
在Visual Studio 2017中的运行结果如图2-7所示。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P36_6636.jpg?sign=1738888261-Ta6wXx1U4L4WRHuXCODjls7sQEgLrxid-0-c17a3f3c60bb3424bf7d6154a4fb8912)
图2-7 标准输出流cout
2.8.2 标准输入流cin
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P36_6647.jpg?sign=1738888261-SMHEJrNK0EjVsYMdjdyL3XGOstd0piym-0-7fb50ff19ac9dbeb13188534931d44ff)
预定义的对象cin是iostream类的一个实例。cin对象附属到标准输入设备,通常是键盘。cin是与流提取运算符“>>”结合使用的,如下所示:
【例2-6】编写程序,完成一个数据的输入。
(1)在Visual Studio 2017中,新建名称为“2-6.cpp”的Project6文件。
(2)在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P36_6649.jpg?sign=1738888261-tJipCWyxu0iSfsJvAoBwikM0VzBiB08C-0-336347f5c00f3bab6f37bcfe1fef2a0b)
【程序分析】本程序定义了两个变量,一个是int型的a,另一个是float型的b。然后通过cin为这两个变量赋值并输出。
在Visual Studio 2017中的运行结果如图2-8所示。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P36_6644.jpg?sign=1738888261-7IlRN93G18l1xJuWFw4qhzDTIIbPEsgx-0-cf8ca62ffc94518262feec26cc39e647)
图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)在代码编辑区域输入以下代码。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P37_6739.jpg?sign=1738888261-aIdqOR3ZmVHWesXGiHrPdY6jsRhnJzUY-0-199f01594fa6e5b0526779017ed80d68)
【程序分析】在程序的第8行代码表示从标准输入(键盘)中读入一个int型的数据并存入到变量a中。如果此时用户输入的不是int型数据,则会被强制转化为int型数据。在第9行代码将输入的整型数据输出。从该语句中我们可以看出cout能够连续地输出。同样cin也是支持对多个变量连续输入的。
在Visual Studio 2017中的运行结果如图2-9所示。
![](https://epubservercos.yuewen.com/F7D2C7/15289822205524706/epubprivate/OEBPS/Images/Figure-P37_6736.jpg?sign=1738888261-22PjMbQIrSMdMSEREyoPUFQZW1hfF9Mz-0-39ecea8ed6a38176f56bbb6ed947b2be)
图2-9 输入整数和小数