以下是引用dlcdavid在2007-3-20 22:48:23的发言:
没考证,如果是这样,那应该是
cout<<"写入文件:>";//输出缓冲区刷新,"写入文件:>"暂时未输出到设备
getche() //不经过缓冲区,所以缓冲区刷新,"写入文件:>"暂时未输出到设备
cout<<"写入完成!\n";//先刷新缓冲区,"写入文件:>"输出到设备
//然后将"写入完成!\n";写入到缓冲区
以上的话没考证,是猜想,有知道的大虾说一下
缓冲区刷新条件:
1程序正常结束.(程序崩溃不刷新)
2缓冲区满,将在写下个值前刷新
3用操作符刷新,如endl.
4用unitbuf设置流内部状态.从而清空缓冲区
5如果输入输出流关联,在读输入流时刷新其关联输出缓冲区(cin.tie(&cout)可将cin与cout关联)
(一个ostream对象每次只能与一个istream对象绑在一起,传递cin.tie(0)取消捆绑)
------------------------------------------------------------------------------------------------------
以下是引用yuyunliuhen在2007-3-20 22:41:02的发言:
cout刷新缓存区需要一定的时间,所以会比printf后输出
理解错了,
在程序执行时cout的缓冲区一直没刷新
执行到printf的时候,他的输出立即显示到了设备上
当退出程序的时候return才清空了cout的缓冲区
所以cout的输出才会在printf的后面
[此贴子已经被作者于2007-3-20 23:18:51编辑过]