gpt4 book ai didi

C++ 程序,控制台/终端输出。如何实现 "updating text"

转载 作者:行者123 更新时间:2023-11-28 06:03:13 24 4
gpt4 key购买 nike

我正在编写一个 C++ 程序,它运行一个长数据分析算法。完成运行需要几天时间,因此每次程序中的新循环开始时都有一个提示输出“完成百分比”是很有用的,这样用户(我)就知道计算机没有陷入无限循环某处或已经坠毁。

目前我正在以最基本的方式执行此操作,通过将完成百分比计算为 float 并执行以下操作:

std::cout << "Percentage complete: " << percentage_complete << " %" << std::endl;

但是,当程序要运行一百万个循环时,这就有点困惑了。此外,如果终端回滚只有 1000 行,那么一旦程序完成 0.1%,我就会丢失在开始时打印出的初始调试信息。

我想复制我在其他程序中看到的一个想法,我不是每次都用完成百分比写一个新行,而是用新的完成百分比替换写入终端的最后一行。

我该怎么做?那可能吗?如果是这样,这可以通过跨平台的方式完成吗?有几种方法可以做到这一点?

我不确定如何完美清楚地描述我正在尝试做的事情,所以我希望这足够清楚,让您理解我正在尝试做的事情。

澄清一下,而不是看到这个:

Running program.
Debug info:
Total number of loops: 1000000

Percentage complete: 0 %
Percentage complete: 0.001 %
Percentage complete: 0.002 %
.
.
.
Percentage complete: 1.835 %

我想看看这个:

Running program.
Debug info:
Total number of loops: 1000000

Percentage complete: 1.835 %

然后在下一个循环中,终端应更新为:

Running program.
Debug info:
Total number of loops: 1000000

Percentage complete: 1.836 %

我希望这些信息足够了。

(好的,所以这个输出实际上是 100000 步,而不是 1000000。)

最佳答案

代替 \nstd::endl,使用 \r。不同的是,后者如果该行没有换行,则将光标返回到开头。

免责声明(根据 Lightness 的反对意见):这不一定是可移植的,所以 YMMV。

关于C++ 程序,控制台/终端输出。如何实现 "updating text",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com