2017-04-10 214 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的我自己,所以我祝你好运!

享受编程!