C++并未定义任何输入输出(IO)语句,取而代之,包含了一个全面的标准库来提供IO机制(以及很多其他设施)。
iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流。
标准输入输出对象
标准库定义了4个IO对象。为了处理输入,我们使用一个名为cin的istream类型的对象。这个对象也被称为标准输入。对于输出,使用一个名为cout的ostream对象,此对象也被称为标准输出。标准库还定义了其他两个ostream对象,名为cerr和clog。我们通常用cerr来输出警告和错误消息,因此它也被称为标准错误。而clog用来输出程序运行时的一般性信息。
一般将一个程序的所有#include指令都放在源文件的开始位置。
向流写入数据
main的函数体的第一条语句执行了一个表达式。在c++中,一个表达式产生一个计算结果,它由一个或多个运算对象和(通常是)一个运算符组成。这条语句中的表达式使用了输出运算符(<<)在标准输出上打印消息。
<<运算符接受两个运算对象:左侧的运算对象必须是一个ostream对象,右侧的运算对象是要打印的值。此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果就是其左侧运算对象。即,计算结果就是我们写入给定值的那个ostream对象。
我们的输出语句使用了两次<<运算符。因为此运算符返回其左侧的运算对象,因此第一个运算符的结果成为了第二个运算符的左侧运算对象。这样,我们就可以将输出请求连接起来。因此,我们的表达式等价于
(std : : cout << “Enter two numbers : “)<< std : : endl ;
链中每个运算符的左侧运算对象都是相同的,在本例中是std : : cout。也可以用两条语句生成相同的输出:
std : : cout << “Enter two numbers:”;
std : : cout << std : : endl;
第一个输出运算符给用户打印一条消息。这个消息是一个字符串字面常量,是用一对双引号包围的字符序列。在双引号之间的文本被打印到标准输出。
第二个运算符打印endl,这是一个被称为操纵符的特殊值。写入endl的效果是结束当前行,并将与设备相关联的缓冲区中的内容刷到设备中。