进度条制作

张开发
2026/4/14 15:43:03 15 分钟阅读

分享文章

进度条制作
1.缓冲区的理解缓冲区是一块临时的内存区域用来在数据从源如程序移动到目的地如屏幕、文件时暂存这些数据。2.为什么使用缓冲区频繁的、小量的I/O操作比如每次printf都直接写屏幕效率非常低。系统调用如write的开销很大。缓冲区将多次小的输出收集起来然后一次性进行大批量写入极大地提高了效率。标准I/O库为不同的流如标准输出stdout设置了不同的缓冲策略常见的有全缓冲缓冲区满了才刷新通常用于文件。行缓冲遇到换行符\n时刷新缓冲区通常用于终端stdout。无缓冲数据立即输出不经过缓冲区通常用于标准错误stderr确保错误信息能及时看到。我们将数据写入文件的过程其实的是我们将数据写入内核缓冲区至于数据什么时候写入文件由操作系统决定。3.进度条的原理倒计时原理使用行缓存\n 会从用户缓冲区刷新数据到终端或者内核缓冲区由于倒计时不需要换行我们可以使用\r 和flush代替\r回车flush刷新数据到终端。#includeiostream #includeunistd.h #includec/12/iomanip #includevector using namespace std; void percentage_bar() { int i10; while(i--) { coutsetw(2)i\rflush; // setw(2) 使打印的i占2个位置 usleep(500000); } } // 实现10秒倒计时目标进度条 [----------][20%] [-------------------------][50%] [--------------------------------------------------][100%] #includeiostream #includeunistd.h #includec/12/iomanip #includestring using namespace std; void percentage_bar() { int i0; string str(101,\0); str[i]-; while(i100) { cout[setw(100)str][setw(3)i%]\rflush; i; str[i]-; usleep(200000); } coutendl; }

更多文章