c++纯控制台进度条

📅 2026/8/9 2:15:44
c++纯控制台进度条
理论按理来说C控制台本身是不能做进度条的用多个endl无法适配所有设备但有了system语法后就可以逐帧来做进度条不需要下载其他库文件再搭配C自有的Sleep就可以实现进度条。众所周知system是shell命令shell命令库里有cls这个清屏的功能所以说输出一帧后处理一下用system(“cls”)后输出下一帧就差不多是标准的进度条了。但是还是会闪这下就要有请windows.h库了这个库的Sleep语句就可以完美解决闪的问题数值大概在500~100左右就够了太大等太久太小又会闪。普通的进度条每次加一就够了而像Windows那样像窗户一样的就要用到自定义函数了也可以直接在主程序里搞要模板代码的私聊我我发你。上代码普通进度条#includebits/stdc.h//万能头文件#includewindows.h//Sleep语句头文件usingnamespacestd;intmain(){intlon100;//数值可自定义进度条长度for(inti1;ilon;i){cout;for(intj1;jlon;j){cout-;}coutendl|;for(intj1;ji;j){cout*;//进度条部分可自定义}for(intj1;jlon-i;j){cout ;//空余部分}cout|endl;cout;for(intj1;jlon;j){cout-;}coutendl;Sleep(100);//防止剧烈闪屏system(cls);//清屏}return0;}lon是进度条长度如有需要可以改成long 或 long long。windows同款#includebits/stdc.h//万能头文件#includewindows.h//Sleep语句头文件usingnamespacestd;constintLON100;//数值可自定义进度条长度boola[LON]{};intwlong20;//窗户长度不能大于LONintChange(){if(a[LON-1]1){a[LON-1]0;a[0]1;}for(intiLON-1;i1;i--){a[i]a[i-1];a[i-1]0;}return0;}intmain(){for(inti0;iwlong;i){a[i]1;}while(1){cout;for(intj1;jLON;j){cout-;}coutendl|;for(intj0;jLON;j){if(a[j]){cout*;continue;}cout ;}cout|endl;cout;for(intj1;jLON;j){cout-;}coutendl;Change();//准备下一次进度条的输出Sleep(20);//防止剧烈闪屏system(cls);//清屏}return0;}这个windows同款的有两个变量LON和wlongLON是进度条的总长wlong是进度条长度。