Linux下的第一个C++小程序——进度条

一、进度条小程序

1.行缓存区

printf函数的输出,会先进入缓存区,而Linux下的缓存区刷新机制是按行刷新(根据不同系统机制不同),例如用printf函数去调试时,可以看到如果printf语句中不带换行,则执行后也不会立刻输出,而带来换行则会立刻输出

了解了缓存区的概念,也就能理解下面的语句为什么没有输出

\r是将光标移动到最开始位置,也就是说实际上123已经输出了,因为光标被移动到最开始位置,所以被命令行输入文本给覆盖了

基于上述理论,我们可以用C++简单的写一个进度条的小程序,实际就是一个空的字符串不断覆盖的一个过程

2.核心代码分析

原理无法就是覆盖而已,其实也没啥好分析的直接给出核心的参考代码,这里为了熟练makefile还有vim等等操作,采用了三个文件有progress.cpp、progress.h、main.cpp来编写,实际没有必要,所以只给最核心的实现部分

progress.h代码

#pragma once                                                                             #include<iostream>                                                                            
using namespace std;                                                                            
#include<string>      
#include<unistd.h>      class progree                                                                                                                                 
{                                                                            
private:                                                                            string s;                                                                            
public:                                                                            progree()                                                                            {                                                                            s.resize(101,' ');                                                                            }                                                                            void use();                                                                            
};

progress.cpp

#include"progress.h"    void progree::use()    
{    for(int i = 0;i<=100;i++)    {    char c[] = "/|\\-";    cout << '[' << s <<']'<< i << '%' << c[i%4] << '\r' ;    cin.sync();    usleep(100000);    s[i] = '*';    }    cout << endl;                                                                                                                               
} 

总结

本篇内容难度不大,主要是为了熟悉练习不久前学的各种指令,熟悉一下vim、make和makefile等等的操作,还提到了缓存区的概念,简单实现了一个小程序进度条

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539438.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

008:安装Docker

安装Docker 如果不太熟悉Linux命令&#xff0c;不想学习Linux命令&#xff0c;可以直接看文末NAS面板章节&#xff0c;通过面板&#xff0c;像使用Window一样操作NAS。 一、安装 Docker 1.安装 Docker wget -qO- https://get.docker.com/ | sh2.启动 Docker 服务 sudo sys…

nginx 基本使用、借助 nginx 和 mkcert 实现本地 https://localhost 测试。

CSDN 如何将资源设置为免费&#xff1f; 安装和基本使用 进入 nginx 官网 下载 Mainline version 版本 解压到一个你喜欢的位置&#xff0c;比如解压到 C: 目录 不管配不配置环境变量&#xff0c;对 nginx 的所有操作都应该在对应文件夹中 基本命令的使用&#xff1a; cd …

KubeSphere 社区双周报|2024.02.29-03.14

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.02.29-03.14…

Python-sklearn-diabetes项目实战

目录 1 下载数据集和预处理 1.1 加载/下载数据集 1.2 数据可视化 1.3 数据清洗 1.4 特征工程 1.5 构建特征集和标签集 1.6 拆分训练集和测试集 2 训练模型 2.1 选择算法和确定模型 2.2 训练拟合模型 3 评估并优化模型性能 本文以糖尿病数据集diabetes为基础进行线性…

Git 学习笔记 三个区域、文件状态、分支、常用命令

Git 学习 GitGit概念VS Code中使用仓库&#xff08;repository&#xff09;示例 Git 使用时的三个区域示例 Git 文件状态示例 Git 暂存区示例 Git 回退版本删除文件忽略文件示例 分支分支的使用分支的合并与删除分支的合并冲突 Git常用命令Git远程仓库 (HTTP)步骤远程仓库 克隆…

LAMP网站部署(Discuz论坛网站部署)

目录 mysql命令 语法 选项 参数 实例 安装php 安装Mariadb 关掉防火墙和selinux 启动HTTP服务 初始化数据库 查看数据库是否创建成功 修改HTTP的配置文件 浏览器打开 将以下所有目录都加上权限 最后首页效果 mysql命令 是MySQL数据库服务器的客户端工具&#xff0c;它工作在命…

D-Star 寻路算法

D-Star 寻路算法 下面简写 D-Star 为 D* D算法&#xff1a;D 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法&#xff0c; 适合面对周围环境未知或者…

Python自然语言处理库之lida使用详解

概要 在当今信息爆炸的时代,自然语言处理(Natural Language Processing, NLP)技术变得越来越重要。Python 作为一种功能强大且广泛应用的编程语言,拥有众多的 NLP 库,其中 lida 库就是其中之一。本文将深入探讨 lida 库的各个方面,包括其基本概念、主要功能、使用方法以…

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示&#xff0c;因此需要根据ChatGPT的反馈进行分析&#xff0c;分析输出具体在哪里不符合期望&#xff0c;然后不断思考和优化提示。如果有条件的话&#xff0c;最好是利用批量的样本来改善提示&#xff0c;这样可以对你的优化结…

PHP中的反序列化漏洞

PHP中的反序列化漏洞 目录 PHP 中的序列化与反序列化 概述 序列化 基本类型的序列化 对象的序列化 反序列化 示例序列化与反序列化 反序列化漏洞 - PHP 中的魔术方法 - Typecho_v1.0 中的反序列化漏洞 POP链的构造思路 pop链案例 反序列化逃逸 字符串逃逸&#xff…

发布组件到npm

1.环境准备&#xff0c;需要装好node&#xff0c;注册号npm账号,这里不做详解 2.创建编写组件和方法的文件夹package 3.在文件夹中创建需要定义的组件&#xff0c;并且加上name属性 //组件 <template><div><button>按钮组件</button></div> &…

微服务分布式springcloud的体育场地预约系统演kdm1z

体育场馆设施预约系统是在实际应用和软件工程的开发原理之上&#xff0c;运用java语言以及Springcloud框架进行开发。首先要进行需求分析&#xff0c;分析出体育场馆设施预约系统的主要功能&#xff0c;然后设计了系统结构。整体设计包括系统的功能、系统总体结构、系统数据结构…