【问题标题】:c++ Print on same linec++ 在同一行打印
【发布时间】:2017-04-10 18:26:54
【问题描述】:

我正在使用计时器来获取循环期间经过的时间。我想在每次循环运行时显示这个时间。

我可以这样做:

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

等等。有没有办法做到这一点?

【问题讨论】:

  • 用回车符'\r' 进行实验。
  • 使用 \r 和 flush !谢谢

标签: c++ printing cout


【解决方案1】:

您可以将 endl 与 clrscr() 一起使用。

【讨论】:

  • 谢谢,但我不想在此循环之前擦除控制台上的先前输出
  • 这不是一个可移植的解决方案。 OP 没有指定编译器或平台。
【解决方案2】:

打印到终端非常容易,但同时也可能非常困难。就其核心而言,终端只是一个文件,您可以使用它来写入或读取。执行诸如更改光标位置之类的任务实际上是特定于系统的,您的代码必须依赖于平台。

但不要惊慌!人们之前已经这样做了,甚至编写了库来做到这一点。我认为 NCurses 会完成这项工作。 https://www.gnu.org/software/ncurses/ncurses.html

我建议您参考此线程以查看与您的问题相关的一些问题:How to clear a specific line with NCurses?

我自己从来没有使用过 ncurses,所以祝你好运!

享受编程!

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 2018-03-20
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多