【发布时间】:2016-02-07 19:35:30
【问题描述】:
制作一个具有某种百分比进度条的程序,但它确实是垃圾邮件。它创建了 100,000 个数字,并以 1% 2% 3% 的感觉显示它的实际进度,唯一的问题是,它使控制台充斥着这些数字,大约每增加一千个数字.
这可能无关紧要,但这是我正在使用的代码
int testing() {
cout << "Open file\n";
fstream outFile("text.txt", ios::out);
int number = 100000;
for (int i = 1; i != number + 1; i++) {
outFile << i << endl;
cout << (i / 1000) << endl;
//cout << clearLastLine();
}
outFile.close();
cout << "File Closed\n";
return 0;
}
注释的 cout 是我想要使用的(据我所知不存在)。每次cout << i/1000 << endl; 触发时,我希望它删除刚刚放入控制台窗口的那个数字,以便可以用下一个数字替换它。这可能吗?如果是,我很想知道 - 谢谢。 -- 下图显示了为什么我希望它清除输出的最后一行。
减少垃圾邮件的新代码,但我最终还是得到了 100 行我不想要的控制台,但我仍然希望显示最新的数字,只是其他的不显示。
int testing() {
cout << "Open file\n";
fstream outFile("text.txt", ios::out);
int number = 100000;
int percentifier = number * .01; // added this so I can change number to be anything I want
int temp2 = 0;
for (int i = 1; i != number + 1; i++) {
outFile << i << endl;
int temp = i / percentifier;
if (temp != temp2) {
//cout << clearLastLine();
cout << (temp) << "%" << endl;
}
temp2 = i / percentifier;
}
outFile.close();
cout << "File Closed\n";
return 0;
}
【问题讨论】:
-
为什么不改变循环的条件,让最后一次迭代永远不会发生?如果没有发生,则不会打印。或者只是在写入
std::cout之前添加一个条件,这样输出就不会发生? -
是的,我现在正在处理这个问题,试图查看 % 是否发生了变化,如果没有,请不要打印 - 但那仍然是我不想要的额外 100 行控制台文本如果我真的让它像那样工作。不过我还是想看看距离完成还有多远。
-
啊,我想我明白你的意思了。这很简单,只需保留一个包含最后一个百分比的变量。如果新百分比等于上一个百分比,则不打印,否则打印并将变量设置为新百分比。
-
是的,知道了:P i.imgur.com/D2cCyeO.jpg - 但是现在,我只需要在数字增加后立即删除那些最后的数字...:L
-
我明白了!!! :D
cout << (temp) << "%" << '\r';\r 使该行覆盖当前存在的内容!!
标签: c++