cout是带缓冲的输出吧?该怎么处理

cout是带缓冲的输出吧??
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上。
可是为什么 cout<<"a";
           while(1);
字符“a”会马上输出呢?而不是等到缓冲区满再输出?谁能我帮我解释一下。

------解决方案--------------------
缓冲区满,或者是程序终止,遇到换行符都会使缓冲区的内容flush到显示终端上
但是并不是只有这几种情况才输出啊。
os或者说某编译器下如何输出,是一个不值得讨论的问题。
因为你不能依赖此内部实现细节,总该自己用上面那几样东西控制它。
别浪费精力吧。