C++语言程序设计

12.1.2标准输入和输出
输出流类在iostream.h中预定义了四个全局的流对象：cout、cerr、clog和cin，用于标准输出和输入，cout和cin在程序设计中会经常用到。
cout流对象控制向控制台（显示器）的标准输出，cin控制从控制台（键盘）输入。cerr与标准错误设备连在一起，是非缓冲输出，也就是说插入到cerr的数据会被立刻显示出来，非缓冲输出可以迅速把出错信息告知用户。clog也是与标准错误设备连在一起的，但它是缓冲输出。
一、标准输出
程序12-1中出现了<<运算符，它是C++中的逐位左移运算符。不过，此运算符在这里被重载，用于流输出操作，称之为插入运算符。它不仅完成逐位左移，而且还能够将对象插入到数据流中，而数据流可以连接到任何与计算机相连的输出设备。cout对象是与控制台相连的，当对象插入到cout中时，它们被发送到控制台（监视器）。例如程序12-1完成的是向控制台输出"pi=3.14159"。同样，其它内部数据类型也可以插入到数据流中。因为<<运算符返回的是ostream对象的引用，所以程序12-1可以简化成：
cout<<"pi="<<pi;
这样可以使程序更加简洁易懂。
引入了插入运算符<<，使ostream类具有了通用性和设备无关性，这是通过多态来实现的。用户可以通过重载插入运算符，将自定义的数据类型进行翻译转换，插入到数据流中，这在后面要详细介绍。
应用<<运算符，执行格式化插入到ostream类中的对象并不象它们原来那样发送到输出，而是首先被转换成简单的数据类型（字节流）。但是在许多情况下，我们希望将数据直接插入到流中而不进行转换。为此ostream类提供了两个函数：put()和write()。前者是将一个字符、无符号字符或者有符号字符插入到字节流中；后者用于插入一个字符数组到字节流中，但不进行任何转换，用于将非格式化的二进制组写到文件和输出设备中。
程序12-2将字符'A'和一组代表非格式float值的字节1.4（4个字节）直接显示到控制台上，显示到控制台的结果实际上是一堆乱码。