当前位置: 首页 > news >正文

精美合同网站建设兄弟网络(西安网站建设制作公司)

精美合同网站建设,兄弟网络(西安网站建设制作公司),建设个网站需要什么,个人网站有哪些网站目录 一#xff0c;进度条的必备知识 1#xff0c;缓冲区的粗略介绍 2#xff0c;回车与换行 二#xff0c;进度条的初步制作 1#xff0c;进度条的初步矿建 2#xff0c;进度条的版本一 3#xff0c;进度条的版本二 一#xff0c;进度条的必备知识 1#xff…目录 一进度条的必备知识 1缓冲区的粗略介绍 2回车与换行 二进度条的初步制作 1进度条的初步矿建 2进度条的版本一 3进度条的版本二 一进度条的必备知识 1缓冲区的粗略介绍 缓冲区是内存的一部分空间用于临时存储输入和输出的数据。它可分为输入缓冲区和输出缓冲区。每当我们输入数据时都是往输入缓冲区中存放数据当刷新缓冲区时数据将会从缓冲区中拿出输入到某个变量中。每当我们输出数据时系统将会把数据输出到输出缓冲区中当刷新输出缓冲区时数据将会从输出缓冲区输出到指定地方。 其中缓冲区的刷新时机是不同的。行缓冲会在遇到换行符时刷新全缓冲会在缓冲区写满时刷新而无缓冲则没有缓冲区代表是系统调用。在C/C中通常用 fflush(FILE* stream) 来强制刷新指定流的缓冲区。 C/C中类似于sleep函数功能控制的就是缓冲区当系统调用到sleep是将会被缓冲区暂时保存起来一旦sleep运行完毕之后缓冲区才刷新。进度条有时控制的就是缓冲区的刷新时间。 2回车与换行 “ 回车 ” 是把光标从当前位置直接指向最开头位置。“ 换行 ” 是把光标从当前位置直接指向下一行同一列的位置。我们在C语言阶段常用的 “ \n ” 指的是 换行  回车。而 “ \r ” 只表示回车。 二进度条的初步制作 1进度条的初步矿建 首先我们先来编写进度条的简单倒计时程序这就需要运用回车和sleep来控制程序的运行。 #include iostream #include iomanip //setw的头文件 #include unistd.h //usleep()的头文件对应参数单位为微秒                                              #include cstdio using namespace std; int main() {     int n 10;     while (n 0) {         cout left setw(2) n \r; //跟C语言中printf(%-2d\r, n)效果一样         fflush(stdout);   //强制刷新输出缓冲区         n--;         usleep(500000);    //这里我们控制缓冲时间为0.5秒     }     cout endl;     return 0; } 下一步要思考进度条的框架设计。这里的进度条将外围用 表示进度的加载外围设置了百分比显示加载数据。用 |/-\ 来表示其中的加载即顺时针旋转。 2进度条的版本一 首先外面设置一个头文件 process.h 进行必要的设置 #include iostream #include string #include unistd.h #include iomanip #include cstdio using namespace std; #define Body    //使用body来表示进度 #define Head    //Head表示目前加载的终点这里用 表示 void process1();  //进度条函数 下面进行进度功能的编写。这里使用 usleep 功能来控制进度的的运行这里需注意的是输出缓冲区的刷新。 void process1() {     //用lable表示进度条的加载     string lable(|/-\\);       string nums;     int count 0;     int lablesize lable.size();     nums.push_back(Head);     while (count 100)     {         cout [ left setw(100) nums ];         cout [ % count ];         cout [ lable[count % lablesize] ] \r;         fflush(stdout);         nums.clear();         count;         nums.append(count, Body);         if (count 100)         {             nums.push_back(Head);         }         //这里我们设置每0.6秒加载一次         usleep(60000);      }     cout endl; } 运行最终结果 [][%100][|] 3进度条的版本二 进度条一般都是运用在一种应用上表示应用的加载过程。很显然版本一的进度条只是无脑运行不知道程序进度是多少即没有依附应用进度比如下载程序这时的进度条需依附于下载进度来跟进。 头文件 process.h 添加如下 #include iostream #include string #include unistd.h #include iomanip #include cstdio #include cstdlib using namespace std; #define Body #define Head #define Max 103 #define FileSize 1024*1024*1024  //设置FileSize文件内存为1G表示下载程序的总大小 typedef void (*callback_t)(double);  //利用函数指针来进行封装进度运用 void download(callback_t);  //模拟一种下载进度 void process2(double rate); //进度条跟进程序 这里在设置download下载时要将每一次的下载进度传递给进度条让其显示百分比。 void download(callback_t cb)   //利用回调函数的形式设置进度 {     srand(time(0)*1024);     int total FileSize;     while (total)     {         //下面表示一次下载动作         usleep(10000);         int one rand() % (1024 * 1024 * 5);         total - one;         if (total 0)          {             total 0;         }         //表示当前的进度         int download FileSize - total;         double rate (download * 1.0 / (FileSize)) * 100.0;         cb(rate); //每一次进度条的传递     } } 进度条设置时要说明以下几点 1我们使用 |/-\\ 表示进度跟进时是根据下载进度进行的与当前的进度无关。 2进度条的总设置需与下载程序紧紧联系。比如当程序加载完时“ ” 进度条中表示进          度运行的就要停止即删除。 3在输出进度运行过程我们可添加其色彩表示美观链接色彩文本的增添 void process2(double rate) {     //用lable表示下载任务一直在跟进     string lable(|/-\\);      //注意这里要保留之前的进度需设置静态     static char buffer[Max] { 0 };     static int cnt 0;     if (rate 1.0)     {         buffer[0] Head;     }     printf(\033[1;31;46m[%-100s]\033[0m[%.1lf%%][%c]\r, buffer, rate, lable[cnt % lable.size()]);  //设置色彩这里我们设置高亮/加粗青色背景红色字体的色彩    fflush(stdout);     //下面控制进度的跟进     buffer[(int)rate] Body;     if ((int)rate 1 100)     {         buffer[(int)(rate 1)] Head;     }     if (rate 100.0)     {         cout endl;     }     cnt;     cnt % lable.size(); } 总代码如下 #include process.h //版本一 void process1() {string lable(|/-\\);string nums;int count 0;int lablesize lable.size();nums.push_back(Head);while (count 100){cout [ left setw(100) nums ];cout [ % count ];cout [ lable[count % lablesize] ] \r;fflush(stdout);nums.clear();count;nums.append(count, Body);if (count 100){nums.push_back(Head);}usleep(60000);}cout endl; } //版本二 void download(callback_t cb) {srand(time(0) * 1024);int total FileSize;while (total){usleep(10000);int one rand() % (1024 * 1024 * 5);total - one;if (total 0){total 0;}int download FileSize - total;double rate (download * 1.0 / (FileSize)) * 100.0;cb(rate);} } void process2(double rate) {static string lable(|/-\\);static char buffer[Max] { 0 };static int cnt 0;if (rate 1.0){buffer[0] Head;}printf(\033[1;31;46m[%-100s]\033[0m[%.1lf%%][%c]\r, buffer, rate, lable[cnt % lable.size()]);fflush(stdout);buffer[(int)rate] Body;if ((int)rate 1 100){buffer[(int)(rate 1)] Head;}if (rate 100.0){cout endl;}cnt;cnt % lable.size(); } int main() {//process1(); //使用进度条粗略版本一download(process2); //使用进度条进化版本二return 0; } 最后要说明的是以上程序都是在Linux系统下运行进行的在VS或其它编译器下可能会出现错误消息这时因为不同平台支持的C标准或系统设置不同而造成的差异。
http://www.w-s-a.com/news/157755/

相关文章:

  • 企业微站系统重庆高端网站建设价格
  • 有没有做衣服的网站吗网站自适应开发
  • 青海省制作网站专业专业定制网吧桌椅
  • 网站开发的项目17岁高清免费观看完整版
  • 手机网站建设多少钱一个门网站源码
  • 重庆 网站开发天津住房和城乡建设厅官方网站
  • 泰安高级网站建设推广厦门高端网站建设定制
  • jsp网站开发引用文献手机seo排名
  • 创建一家网站如何创设计网页的快捷网站
  • 1688代加工官方网站h5开发教程
  • 静态网站源码下载网站怎么显示备案号
  • 网站代码设计网站开发维护任职要求
  • 长寿做网站的电话怎么快速刷排名
  • 上海市中学生典型事例网站邯郸全网推广
  • 厦门网站建设680元好男人的最好的影院
  • 石家庄网站建设设计产品设计专业就业前景
  • 网站移动排名做最好最全的命理网站
  • 网站怎么防黑客杭州市做外贸网站的公司
  • 网站推广公司认准乐云seo易语言做网站登录
  • 配色设计网站推荐网站下拉菜单重叠
  • 内容展示型网站特点在北京注册公司需要多少钱
  • h5网站源代码创意设计理念
  • 岳阳网站开发服务推广运营平台
  • 网站开发得多长时间湖南建设人力资源网证书查询
  • 论坛网站开发网络营销是什么时候产生的
  • 帮人做网站赚钱无忧软文网
  • 做网站要不要营业执照重庆网站优化seo公司
  • 学院宣传网站建设简介做网站没灵感
  • 网站建设终稿确认书网站意义学校
  • 3小时网站建设平台专业制作教学课件