LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1498|回复: 4

c++如何打印输出到屏幕的同一位置?

[复制链接]
发表于 2005-8-13 16:34:20 | 显示全部楼层 |阅读模式
我的意思是,比如说下面一句话会输出到屏幕,然后紧跟着后面的一句话会打印到第一句话的后面:
cout << "this is the first sentence ";
cout << "this is the second sentence";

我的问题是如何让第二句话输出到第一句话的位置(就是把第一句话擦掉,然后在同位置显示第二句话)?

Thansks
发表于 2005-8-13 20:31:46 | 显示全部楼层
这和c/c++有什么关系?就算是perl/python也照样可以用一个通用的方法:
/*c*/
printf( "this is the first sentence " );
printf( "\rthis is the second sentence" );

//c++
cout << "this is the first sentence ";
cout << "\rthis is the second sentence";

#python
print 'this is the first sentence', #must follow a comma
print '\rthis is the second sentence'

#perl
print "this is the first sentence ";
print "\rthis is the second sentence";
回复 支持 反对

使用道具 举报

发表于 2005-8-14 00:27:11 | 显示全部楼层
linux下需要用ncurses库或者直接对终端操作
回复 支持 反对

使用道具 举报

发表于 2005-8-14 08:34:58 | 显示全部楼层
Post by x11
linux下需要用ncurses库或者直接对终端操作

根本不需要。楼主的要求就是n行覆盖n-1行。用一个“\r”就足够了。
所有的进度条,如“[=====          ] 50%”都是用一个“\r”来实现的。除非有人特别喜欢简单复杂化。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-14 17:37:49 | 显示全部楼层
thanks


不过我要的并不是只是像masterdemon所说的用n行覆盖n-1行,可能我的例子给的不好,
我的意思是说要把前面的那一行完全擦去。如果按照masterdemon的方法,如果我把第二句话改成
this is the sentence, 那么打印的结果就变成了
this is the sentencentence
这并不是我想要的,我想要的结果是程序最后只打印this is the sentence,而不是"this is the sentencentence"
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表