第6天

输出运算符(<<)的计算结果是已经写入定值的ostream对象,输出的是一个对象。

std::cout << "Enter two numbers: " << std::endl
在这里,第二个输出运算符的左侧运算对象是第一个运算符的结果(一个对象),这样可以将输出请求连接起来,等价于
(std::cout << "Enter two numbers: ") << std::endl
链中的每个输出运算符的左侧对象都是相同的,等价于
std::cout << "Enter two numbers: " << std::endl
std::cout << std::endl;

endl 是操纵符的特殊值,写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中,缓冲刷新操作可以保证到目前为止程序所产生的所有的输出都真正的写入到输出流中,而不是仅停留在内存中等待写入流。(调试时打印语句应该保证一直刷新流,否则如果程序崩溃,输出可能还留在缓冲区中,从而导致关于程序崩溃位置的错误推测。)

#include指令包含来自标准库的头文件时,应该用尖括号(<>),不属于标准库的头文件,则用双引号("")。

cout和cerr的区别
1、cout对应于标准输出流
cerr对应于标准错误流
2、cout和cerr的主要区别就是cout可以利用cmd命令行参数的方式进行重定向,而cerr则不行。
用cmd运行,屏幕打印出cerr的信息,而cout的信息被输出到文件中。
3、cerr不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。
而cout是一个有缓冲的输出。但是cerr也可以通过rdbuf方法重定向到文件中


原文地址:https://www.cnblogs.com/SFTD/p/3631493.html