news 2026/5/1 18:07:45

进度条制作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
进度条制作

1.缓冲区的理解

缓冲区是一块临时的内存区域,用来在数据从源(如程序)移动到目的地(如屏幕、文件)时,暂存这些数据。

2.为什么使用缓冲区

频繁的、小量的I/O操作(比如每次printf都直接写屏幕)效率非常低。系统调用(如write)的开销很大。缓冲区将多次小的输出收集起来,然后一次性进行大批量写入,极大地提高了效率。

标准I/O库为不同的流(如标准输出stdout)设置了不同的缓冲策略,常见的有:

全缓冲:缓冲区满了才刷新(通常用于文件)。

行缓冲:遇到换行符\n时刷新缓冲区(通常用于终端stdout)。

无缓冲:数据立即输出,不经过缓冲区(通常用于标准错误stderr,确保错误信息能及时看到)。

我们将数据写入文件的过程,其实的是我们将数据写入内核缓冲区,至于数据什么时候写入文件由操作系统决定。

3.进度条的原理

倒计时原理,使用行缓存'\n' 会从用户缓冲区刷新数据到终端或者内核缓冲区,由于倒计时不需要换行,我们可以使用'\r' 和flush代替,'\r'回车,flush刷新数据到终端。

#include<iostream> #include<unistd.h> #include<c++/12/iomanip> #include<vector> using namespace std; void percentage_bar() { int i=10; while(i--) { cout<<setw(2)<<i<<'\r'<<flush; // setw(2) 使打印的i占2个位置 usleep(500000); } } // 实现10秒倒计时
目标进度条: [---------->][20%] [------------------------->][50%] [-------------------------------------------------->][100%] #include<iostream> #include<unistd.h> #include<c++/12/iomanip> #include<string> using namespace std; void percentage_bar() { int i=0; string str(101,'\0'); str[i]='-'; while(i<=100) { cout<<'['<<setw(100)<<str<<'>'<<']'<<'['<<setw(3)<<i<<'%'<<']'<<'\r'<<flush; i++; str[i]='-'; usleep(200000); } cout<<endl; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 16:01:17

Qwen3.5-9B 最新YOLOv11技术解析:对比YOLOv5的改进与部署实践

Qwen3.5-9B 最新YOLOv11技术解析&#xff1a;对比YOLOv5的改进与部署实践 1. YOLOv11效果惊艳亮相 目标检测领域又迎来重大突破。Qwen3.5-9B对最新发布的YOLOv11进行了全面解析&#xff0c;这款号称"史上最强"的YOLO系列模型在精度和速度上都实现了质的飞跃。我们用…

作者头像 李华
网站建设 2026/4/15 22:36:05

3步构建金融数据API:AKTools如何让AKShare接口突破语言限制

3步构建金融数据API&#xff1a;AKTools如何让AKShare接口突破语言限制 【免费下载链接】aktools AKTools is an elegant and simple HTTP API library for AKShare, built for AKSharers! 项目地址: https://gitcode.com/gh_mirrors/ak/aktools 在当今数据驱动的金融科…

作者头像 李华
网站建设 2026/4/15 22:34:32

C#与C/C++交互:DLLImport与CLR封装实战对比

1. 为什么需要C#与C/C交互&#xff1f; 在软件开发领域&#xff0c;C#和C/C各有优势。C#开发效率高、语法简洁&#xff0c;特别适合快速构建Windows应用程序和企业级解决方案。而C/C则以高性能著称&#xff0c;常用于系统底层开发、硬件驱动、游戏引擎等对性能要求极高的场景。…

作者头像 李华
网站建设 2026/4/15 23:16:28

大学生C语言课设实战:五子棋项目开发避坑指南(附完整源码)

大学生C语言课设实战&#xff1a;五子棋项目开发避坑指南&#xff08;附完整源码&#xff09; 五子棋作为经典棋类游戏&#xff0c;是C语言课程设计的常见选题。它不仅涵盖基础语法训练&#xff0c;还能锻炼模块化设计、算法实现和图形交互等核心能力。但在实际开发中&#xf…

作者头像 李华
网站建设 2026/4/16 21:49:17

GME-Qwen2-VL-2B:驱动AIGC创意工作流的视觉语义理解引擎

GME-Qwen2-VL-2B&#xff1a;驱动AIGC创意工作流的视觉语义理解引擎 你有没有遇到过这样的情况&#xff1f;脑子里有一个绝妙的画面&#xff0c;用文字描述出来&#xff0c;丢给AI画图工具&#xff0c;结果生成的图片和你想象的差了十万八千里。要么是细节不对&#xff0c;要么…

作者头像 李华