2017-04-10 137 views
0

我正在使用計時器來獲取循環過程中的時間。我想在每次循環運行時顯示這個時間。C++在同一行上打印

我可以這樣做:

for(int i = 0;i<3;i++) 
{ 
    sleep(2 secs); 
    time= get_time(); 
    cout<<"time is : "<<time; 
} 

但我有輸出:

time is : 2 time is : 4 time is : 6 

我可以添加一個endl有它在列,但不是我想要的。我的循環大約有一百萬次,所以我不想打印一百萬行。

我只是想打印,如:

time is : 2 

,然後將其刷新

time is : 4 

等。有沒有辦法做到這一點?

+0

用回車符'\ r''字符進行實驗。 –

+1

使用\ r和flush!謝謝 – Minamoto

回答

1

你可以在clrscr()中使用endl。

+1

謝謝,但我沒有想在這個循環之前在控制檯上抹掉我以前的輸出 – Minamoto

+0

這不是一個便攜式解決方案。 OP沒有指定編譯器或平臺。 –

1

打印到終端很容易,但它可以在同一時間非常困難。從核心來看,終端只是一個文件,可以用來寫或讀。執行諸如改變光標位置的任務實際上是系統特定的,並且您的代碼必須依賴於平臺。

但是不要驚慌!人們之前做過,甚至寫圖書館去做。我認爲NCurses會完成這項工作。 https://www.gnu.org/software/ncurses/ncurses.html

我建議你參考這個線程看到您問題相關的一些問題:How to clear a specific line with NCurses?

我從來沒有使用ncurses的我自己,所以我祝你好運!

享受編程!