\r终端输出的问题
来源:互联网 发布:linux jar 输出 编辑:程序博客网 时间:2024/05/21 17:22
近期偶一直在研究一个进度条的问题,具体要求是:
程序在运行过程中要有进度显示,进度条需要根据时间不停的刷新,但是要求可以被其他的屏幕输出信息覆盖。
so so,怎么解决呢?
研究了一下c/c++的输出控制,发现一个格式控制符'\r‘似乎可以满足需求。解决方法: 在输出进度条的时候不换行,下次输出信息时用 std::cout << '\r ‘ 覆盖掉之前的进度条。
小试了一下,问题貌似解决。
但是,but,接下来出现了一个比较麻烦的问题。
客户经常会通过管道等方式将屏幕输出定向到一个文件中去,而格式控制符'\r’在文件中是乱码,如何区分屏幕输出(终端)和文件输出呢?
纠结了好久,老大的一句好拨开了云雾:使用std::cerr
简单来讲,std::cout默认是终端输出,但是可以将它的rdbuf绑定到一个文件流上去,例如管道重定向。但是std::cerr只能绑定到终端输出。
相应的调整了一下代码,利用std::cerr的特性来绑定终端输出的进度条代码,其余的默认输出。并且在每次输出其他信息的时候,调用 std::cerr << '\r ‘ 来清洗之前的进度条信息。
0 0
- \r终端输出的问题
- codeblocks 输出终端改为系统的终端
- windows 输出\r\n问题
- WindowsGUI程序的终端输出
- 抓终端输出的打印
- 终端切换的问题
- qt简单的hello world测试程序终端无输出问题
- java从终端输入再输出中文为乱码的问题
- Linux终端彩色字符的输出方法
- Linux 终端下颜色的输出
- ubuntu使用-记录终端输出的LOG
- Linux终端彩色字符的输出方法
- Linux输出终端字体的颜色设置
- Linux 终端下颜色的输出
- Linux输出终端字体的颜色设置
- 如何改变终端输出的颜色
- 如何更改终端字体的输出格式
- 通过printf设置终端输出的颜色
- 【C语言代码】链表的简单建立
- tomcat 启动正常 不能访问
- java网络编程
- java通过文件头内容判断文件类型
- windows 下-c语言获得目录下特定类型的文件名
- \r终端输出的问题
- MFC菜单消息漫谈
- 我不是个内向的程序员,我只是很忙
- Android Fragment (with Compatibility Package on 2.3.3) creates “Specified child already has a parent
- YII-在CGridview显示的字段上面加上带参数的链接
- Android部分开源项目源码分析之--ListView 图片顶部模糊的高斯处理
- 线性表练习题2
- Windows7与Window2008 64位IIS7上面配置操作Excel
- 扫描二维码自动识别手机APP下载地址