使用标准库进行控制台输入输出时,有一些需要知道的内容。
更新缓冲区
使用 C++ 进行控制台输出时,系统将先把内容输出到缓冲区,然后再显示到屏幕或输出到其它输出流的目的地上。为了保证获取输出结果,必须注意更新缓冲区。
导致缓冲区内容被刷新的几种情况
1、程序正常结束。作为main返回工作的一部分,将清空所有输出缓冲区。 2、缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新。 3、用操作符显式地刷新缓冲区,例如行结束符endl和flush。 4、在每次输出操作执行完后,用unitbuf操作符设置流的内部状态,从而清空缓冲区。 5、可将输出流与输入流关联起来。在这种情况下,在读输入流时,将刷新其关联的输出缓冲区。 此外还应注意,如果程序不正常结束,输出缓冲区将不会刷新。调试程序时,必须保证期待写入的每个输出都确实被刷新了。最好的方法是保证所有的输出操作都显式地调用了flush或endl。 下面的程序输出一些值并关注其缓冲区的状态。
[...]

近期评论