Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中显示一个简单的进度条+;_C++ - Fatal编程技术网

C++ 在C+中显示一个简单的进度条+;

C++ 在C+中显示一个简单的进度条+;,c++,C++,问题是: 我想在C++函数执行过程中显示进度条(就像文本一样的“剩余35%…”)。我已经完成了第一部分,即进度条,但问题是如何在其他函数执行期间显示进度条 我只想在执行进入某个特定函数时开始显示该条,并在离开该函数时达到100%。 如何在C++中实现这一点?有什么建议吗? 提前谢谢 /Niklas使用单独的线程更新进度条。这应该给你的申请“近乎真实”的进步。 有两件事要考虑。首先,什么时候更新进度条?通常,这可以通过将函数所做的工作划分为刻度来完成,然后使用刻度计数,每次函数前进一个刻度时,您都

问题是: 我想在C++函数执行过程中显示进度条(就像文本一样的“剩余35%…”)。我已经完成了第一部分,即进度条,但问题是如何在其他函数执行期间显示进度条

我只想在执行进入某个特定函数时开始显示该条,并在离开该函数时达到100%。 如何在C++中实现这一点?有什么建议吗? 提前谢谢


/Niklas使用单独的线程更新进度条。这应该给你的申请“近乎真实”的进步。

有两件事要考虑。首先,什么时候更新进度条?通常,这可以通过将函数所做的工作划分为刻度来完成,然后使用刻度计数,每次函数前进一个刻度时,您都会增加刻度计数。一个例子是:

void SomeFunction() {
    for ( int i = 0; i < 1337; i++ ) {
        // do important stuff
        ProgressBar.IncreaseTickCount();
    }
}

这样,进度条将能够在循环的每次迭代中重新计算其值。这在屏幕上的显示方式取决于您的GUI框架。正如前面提到的和对他的答案的评论一样,您很可能会让函数在工作线程中运行,UI线程将持续更新进度条。在这种情况下,请确保勾号计数器是线程安全的。

可以在以下位置的单个文件中找到一个简单的基于文本的stdout tic样式的进度条:
. 如果你愿意,可以用线把它包起来。一个很好的特性是,只需在一行上进行最少的打印,因此开销非常便宜,您不需要玩像“\r”这样神奇的“将光标重置为行首”字符的游戏。

您使用的是什么UI框架?Win32?Qt?文本控制台?我想在标准输出中将进度条显示为文本。一些轻快的话:“完成:=============>38%”等等。但重要的部分是在执行另一个函数时更新百分比值。我只想将函数的输出写入一个文件,同时更新stdout中完成的百分比。一般来说,好的建议对Windows程序来说是坏的建议-只有一个线程应该与GUI交互,否则会发生坏的事情。相反,在工作线程中运行该函数,让主线程在状态栏中工作。“只有一个线程应该与GUI交互,否则会发生不好的事情”->对任何平台上使用GUI的任何程序都有很好的建议。
ProgressBar.SetNumberOfTicks( 1337 );
SomeFunction();