输出缓冲区的刷新

重读C++ Primer,才发现endl不仅仅是换行那么简单,还有刷新缓冲区的作用。

“程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致对程序崩溃位置的错误判断”。

将信息写入控制台、磁盘文件之前都会在缓冲区中呆上一会儿。如果不刷新缓冲区,有的编译器不会将信息写入,而让其停在缓冲区中;有的编译器会让信息在缓冲区待一会,然后再输出。

如果在这时,程序崩溃了,可能会造成磁盘文件的缺失,带来不必要的麻烦。

所以我们有必要亲自去刷新缓冲区,如下例:

cout << "hi!" << flash;//刷新缓冲区
cout << "hi!" << ends;//结尾添加NULL并刷新缓冲区
cout << "hi!" << endl;//结尾添加\n并刷新缓冲区

你可能感兴趣的:(null,编译器,磁盘)