【问题标题】:Delete the last line outputted into console from a cout?删除从 cout 输出到控制台的最后一行?
【发布时间】: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 &lt;&lt; i/1000 &lt;&lt; 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 &lt;&lt; (temp) &lt;&lt; "%" &lt;&lt; '\r'; \r 使该行覆盖当前存在的内容!!

标签: c++


【解决方案1】:

好吧,由于我已经对我的问题进行了更多改进,我正在寻找的答案的问题出现在可能的答案列表中。低头看,我找到了我想要的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多