制作控制台进度条?(视窗)

Ada*_*dam 6 c++ windows cout console-application progress-bar

所以我有一个函数(或者更确切地说,我稍后将其转换为函数)以在控制台窗口中进行随机%进度; 像这样:

#include <iostream>
#include <time.h>
#include <cmath>
#include <windows.h>

using namespace std;

int main()
{
    srand(time(0));
    int x = 0;

    for(int i = 0; i<100; i++){
        int r = rand() % 1000;
        x++;
        cout << "\r" << x << "% completed." << flush;
        if(i < 43){
           Sleep(r/6);
        }else if(i > 43 && i < 74){
           Sleep(r/8);
        }else if(i < 98){
           Sleep(r/5);
        }else if(i > 97 && i != 99){
           Sleep(2000);
        }
    }

    cout << endl << endl << "Operation completed successfully.\n" << flush;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是,我希望输出如下:

1% completed

|
Run Code Online (Sandbox Code Playgroud)

(后来...)

25% completed

|||||||||||||||||||||||||
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

提前致谢!

mas*_*oud 14

打印字符'\r'很有用.它将光标放在行的开头.

由于您无法再访问上一行,您可以使用以下内容:

25% completed: ||||||||||||||||||
Run Code Online (Sandbox Code Playgroud)

每次迭代后:

int X;

...

std::cout << "\r" << percent << "% completed: ";

std::cout << std::string(X, '|');

std::cout.flush();
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用:基于便携式文本的控制台操纵器