作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [請益]請問cout.flush()的功用
時間Thu Oct 2 22:03:23 2008
※ 引述《gn02003330 ()》之銘言:
: 標題: [請益]請問cout.flush()的功用
: 時間: Thu Oct 2 01:14:02 2008
:
: 1.第一題作業的提示有說要用到cout.flush()
: 說是清除緩衝區強制輸出
: 請問跟直接用cout輸出有什麼不同?
: 因為我沒用這個函數也寫出"看起來很像"題目指定的結果
:
: 2.真的不用再另外用函數計時嗎
: 自己電腦的CPU還不差
: 寫出來的時間飆超快的XD
:
: 解答感謝
:
: --
:
※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 220.136.179.17
: → chicklet:順便問一下使用方法..不懂 10/02 21:32
不用 cout.flush() 看起來不會很怪嗎?
請看 cout.flush() 的定義 (from www.cplusplus.com)
=============================================================================
ostream& flush ( );
Flush output stream buffer
Synchronizes the buffer associated with the stream to its controlled output
sequence. This effectively means that all unwritten characters in the buffer
are written to its controlled output sequence as soon as possible ("flushed").
The function only has meaning for buffered streams, in which case it
effectively calls the pubsync member of the streambuf object
(rdbuf()->pubsync()) associated to the stream.
A manipulator exists with the same name and behavior (see flush manipulator).
=============================================================================
ostream is a buffered stream.
你可以試試以下的程式 (Change the value of "DELAY" to suit the speed of your
computer), 你應該可以看到有東西在 "轉":
#include <iostream>
using namespace std;
#define DELAY 20000000
int main()
{
char p[] = { '-', '\\', '|', '/' };
int i = 0;
while (++i) {
cout << p[i % 4];
cout.flush();
for (int j = 0; j < DELAY; j++);
cout << '\b';
}
}
試試看 comment out "cout.flush()" 有何不同?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.133.162
1F:→ gn02003330:其實感覺不太出來哪裡不一樣耶orz,flush應該是把 10/02 23:39
2F:推 saevia:我也覺得差不多... 10/02 23:40
3F:→ gn02003330:buffer裡的東西強制清空印出來,所以應該是比較不會 10/02 23:40
4F:→ gn02003330:delay,可是感覺那個delay的時間好像短到根本看不出來 10/02 23:40
5F:推 wintercobra:為什麼要強制清空印出來?cout不就已經印了嗎? 10/03 00:18
6F:→ wintercobra:還是說有什麼東西留在緩衝區內? 10/03 00:19
7F:推 timrau:確實可能留在buffer裡啊 10/03 01:21
8F:→ timrau:除非碰到換行, 需要input, flush(), 或是buffer full, 10/03 01:22
9F:→ timrau:否則都有可能留在buffer裡而沒有真的顯示出來 10/03 01:23
10F:推 jtes5506:char p[] = ('a','b','c'}這實在太好用啦 一三題都靠他 10/07 08:12
11F:→ jtes5506:by the way 可否指定輸入某幾項資料,其他空白就好。 10/07 08:14
12F:→ ric2k1:不是很清楚樓上的問題... 不過 array 在下下個章節會教 10/07 08:37