【问题标题】:c++ reprint text in terminal with carriage returnc ++在终端中用回车重新打印文本
【发布时间】:2018-05-24 13:47:12
【问题描述】:

我想在 Linux 终端中打印一个更新后的数字,但没有类似的

picture 1
picture 2
picture 3 
picture [...]

我已经知道如何用 C 代码做到这一点

printf("\rpicture %d", i);
fflush(stdout);

i 是我的图片编号

我的问题是:是否可以使用std::cout 或类似的简单方法来代替printf

编辑:

使用std::cout << "\rPicture " << i << "done"; 不如printf 好,因为我没有在终端中看到所有数字滚动

Picture 74 done

Picture 150 done
FPS          : 7.89474
picture number   : 150

P.S : 我们不是来批评我的 FPS 数字,那是我的程序根本没有优化

【问题讨论】:

  • printf("\rpicture %d", i); ---> std::cout << "\rpicture " << i;
  • 我不这么想,但是试过之后,效果不如printf例子;我现在会用结果更新我的帖子
  • because I didn't see all number scroll in the terminal 如果您想查看所有数字,为什么要使用\r?有点不清楚你想做什么。
  • @DimChtz 使用 printf 命令,我看到所有数字都在同一个地方滚动,但是使用 std::cout 命令,效果不如 printf;我只看到“74”和最后一个“150”,好像它比 printf 显示慢很多
  • 可能需要刷新缓冲区:std::cout << "\rpicture " << i << std::flush;

标签: c++ linux terminal


【解决方案1】:

在 C++ 中,它就像在 C 中一样简单,我第一次没有考虑过它

在 C 中:

printf("\rPicture : %d", i);
fflush(stdout);

在 C++ 中:

std::cout << "\rPicture " << i << std::flush;

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2018-08-28
    • 1970-01-01
    • 2018-05-08
    相关资源
    最近更新 更多