制作一个具有百分比进度条的程序,但它真的很垃圾。它创造了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;
}
答案 0 :(得分:5)
好吧,既然我已经更加完善了我的问题,那么我正在寻找答案的问题就出现在可能答案的列表中。然后,我发现了我想要的东西。
使用'\ r'修饰符,而不是endl;在cout << (temp) << "%" << endl;
上,一旦写入,就会删除当前行,并用下一个数字覆盖它。