我写了一个数值模拟,作为一个调整,我想添加一些基本的进度条。 在主循环中我写道:
if(particles.t>=pr*maxtime){
cout << "|";
pr+=0.01;
}
其中pr从0.01开始。所以,基本上它应该是一百个“|”在计算过程中。而不是它吹嘘这些“|”在模拟结束时,一次全部。
当我将此代码修改为:
if(particles.t>=pr*maxtime){
cout << pr << "\n";
pr+=0.01;
}
它可以正常工作。
我想这与优化有关,我正在使用g ++编译我的代码,使用选项-Wall和-lm。我之前用C#编写的代码就是这样的代码。
答案 0 :(得分:4)
问题在于缓冲输出。每次打印后放置cout.flush();
,问题应该解决。
答案 1 :(得分:1)
对cout
(以及许多其他流)的写入进行缓冲。如果要立即显示它们,则需要刷新流:
if(particles.t>=pr*maxtime){
cout << "|";
cout.flush();
pr+=0.01;
}