1.操纵算子被使用在输入或输出表达式中,用来改变流的状态。最常用的是endl。
2.endl并不单纯的是'\n'的替代品,endl除了可以在流中插入一个换行符,还可以刷新流的缓冲区。
以下程序比较了endl和'\n'的区别:
例1.使用'\n'换行
#include<iostream>
int main()
{
std::cout<<1<<'\n';
std::cout<<2;
char c;
std::cin>>c;
return 0;
}
例2.使用endl换行
#include<iostream>
int main()
{
std::cout<<1<<std::endl;
std::cout<<2;
char c;
std::cin>>c;
return 0;
}
通过实验可以发现两个程序的输出结果并没有什么不同,但是如果尝试单步调试这两个程序可以发现
用'\n'来换行,在std::cout<<1<<'\n';这句话时窗口并没有任何显示,因为1和'\n'在缓冲区中了。而用
endl来换行,在std::cout<<1<<std::endl;这句话时窗口显示1并且光标显示在下一行,说明操作算子endl
插入换行符后,还刷新流的缓冲区了。
通过这一点我们可以用来调试程序,多处设置cout语句,并用endl来刷新缓冲区以显示部分内容,而
不至于对于只有最后才能输出结果的程序提前崩溃而没有办法输出,看不到结果。