楼主:
zoooooa (喔唷唷唷唷唷)
2016-05-03 23:09:56开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
iostream
问题(Question):
小弟在 Win7 + Visual Studio 2013 中
直接使用 cout<<"123";
便可以直接显示123在萤幕上
疑问的点是
不是应该会先放置在Buffer内
直到遇见endl或flush才会输出吗?
为什么不用加endl也会直接清空缓冲区呢?
求解惑
楼主:
zoooooa (喔唷唷唷唷唷)
2016-05-03 23:42:00在linux下只用cout不加endl就不会有字串输出到萤幕上好奇为何在windows上却有不同执行结果
作者:
LPH66 (-6.2598534e+18f)
2016-05-04 00:10:00标准只规定 << flush 时要冲马桶, 没规定其他时候冲不冲
作者: black17 (喔郎) 2016-05-04 02:10:00
endl是换行的意思吧!?
作者:
Caesar08 (Caesar)
2016-05-04 08:41:00换行+flush
endl 是换行 会flush是因为cout是line buffered吧?
10252那篇结论我想讲的很清楚了单纯只是windows没分配buffer
作者:
Caesar08 (Caesar)
2016-05-04 09:57:00cppreference, Inserts a newline character into the output sequence漑s乸nd flushes it as if by calling漑sN4582, 27.7.3.8, 1, Calls os.put(os.widen(’\n’)),then os.flush().
原文问的是windows没加endl为何会输出,楼上丢endl不是文不对题吗
作者:
Caesar08 (Caesar)
2016-05-04 10:12:00我在回那两位不知道endl是什么的标准只规定flush要sync,以及使用相对的in与err要flush,没说其他情况不能flush(例如单纯呼叫operator<<)
印象中标准没规定不能flush的情况,反而一堆地方有规定会flush,例如exit()
作者: longlongint (华哥尔) 2016-05-04 12:17:00
因为你只用过eclipse啊(?
所以有时候会写成cout<<"123\n";反正一样结果
回楼上,遇到fully buffered行为就不一样了