从cout中删除输出到控制台的最后一行?

时间:2016-02-07 19:35:30

标签: c++

制作一个具有百分比进度条的程序,但它真的很垃圾。它创造了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;触发时,我都希望它删除它刚刚放入控制台窗口的那个数字,因此可以用下一个数字替换它。这可能吗?如果是的话,我很想知道 - 谢谢。 - 下面这张图片显示了我希望它清除输出的最后一行的原因。 lots of 99% then 100% to close

新代码减少垃圾邮件,但我仍然最终得到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;
}

1 个答案:

答案 0 :(得分:5)

好吧,既然我已经更加完善了我的问题,那么我正在寻找答案的问题就出现在可能答案的列表中。然后,我发现了我想要的东西。

使用'\ r'修饰符,而不是endl;在cout << (temp) << "%" << endl;上,一旦写入,就会删除当前行,并用下一个数字覆盖它。