几天前看到了 Python 中有一个库 tqdm 的功能非常亮眼,这个库的作用其实就是为一些循环任务提供了一个进度条显示效果,面向 CLI 的。
具体使用方法还挺简单的:在循环开头把一个迭代对象传给 tqdm 就行了,然后就可以看见信息丰富的进度条更新效果。
于是就寻思 C++ 有没有一个这样的第三方库,说不定以后在什么地方能够用得上。
可惜在 Github 上找了一圈,发现已有的库不是速度慢的令人发指,就是不能在 Windows 系统上运行,而且 tqdm 的 C++ official 版本甚至还在 pre-alpha 阶段(就是完全不能用)。
不过看了一下 tqdm 的作者的头衔是满满一堆,commit 栏跟泳池瓷砖似的,估计他就没想起过这茬;然后我看了一眼这些作者的实现方式,感觉也不太复杂,所以干脆就想着自己写一个。
本着轻量级、高度可定制的目标抽空写了几天(然后缝缝补补了好久),最终就写出来了这么个版本:
这里拿了仓库里的 demo/ 下的样例程序编译运行演示一下。对比了一下其他人的实现,感觉写的也还过得去(主要是体现了点差异),于是就丢在 Github 上了,有需要的话可以自己 clone 下来用。
顺便一提,这个实现方式只要求编译器支持 C++11。
详细使用方式参见仓库内的 README,← 有任何问题可以到这里提 issues。
看的人多的话指不定会写一篇如何制作这个东西(
PS: 刚刚又在 Github 上看了一圈,才看见已经有一个基于 C++17 的 tqdm 了(乐)