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等等的操作,还提到了缓存区的概念,简单实现了一个小程序进度条

相关推荐

  1. Linux第一程序---进度

    2024-03-15 12:38:04       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 12:38:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 12:38:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 12:38:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 12:38:04       18 阅读

热门阅读

  1. 《数据库》复试问答题总结

    2024-03-15 12:38:04       20 阅读
  2. 软考网络工程师 第五章 第六节 WLAN安全

    2024-03-15 12:38:04       22 阅读
  3. C# tcp通信连接正常判断

    2024-03-15 12:38:04       22 阅读
  4. ARM/Linux嵌入式面试专栏前言

    2024-03-15 12:38:04       19 阅读
  5. 数据库DBMS,DBS,DBA

    2024-03-15 12:38:04       19 阅读
  6. 2023 年 9 月青少年软编等考 C 语言一级真题解析

    2024-03-15 12:38:04       18 阅读