使用C ++清除屏幕

时间:2013-06-27 06:17:14

标签: c++

我想清除我首先看到的几个选项的CMD屏幕

system('clr');  

但不想使用系统原因然后它使它依赖于windows,与unix版本相同

如果我尝试

cout << string(22, '\n');

然后我的下一行文字在屏幕的底部,我希望它在顶部。如何清除屏幕并将文本恢复到屏幕顶部?

因此说我有这个。

cout<<string(22, '\n');
cout<<"************Question 1 *******"<<endl;
cout<<"WHO WAS THE FIRST BLACK PRESEDENT?"<<endl;
cout<<"(1) Obama"<<endl;
cout<<"(2) Bush"<<endl;
cout<<"(3) Jordan" <<endl;
cin>>answer>>endl;

这将清除屏幕然后将mymenu放在屏幕的底部...我怎样才能使屏幕清晰并将问题/答案重新放回屏幕顶部。

4 个答案:

答案 0 :(得分:17)

试试这个:它适用于Linux和Windows。

cout << "\033[2J\033[1;1H";

这是一串特殊字符,可以转换为清除屏幕命令。

你可以把它包含在一个像这样的函数中。 clrscr()取决于您的实施。

答案 1 :(得分:8)

如果您想要一个适用于Windows,Mac和Mac的解决方案在Linux / UNIX中,您需要提出自己的实现。我不相信有一种方法可以在所有平台上运行。

对于Mac / Linux / UNIX / BSD /等,ncurses提供了一种简单的方法(http://www.gnu.org/software/ncurses/)。

对于Windows,您可能希望查看conio.hhttp://en.wikipedia.org/wiki/Conio.h)或PDCurses(http://pdcurses.sourceforge.net/)或类似内容。或者,根据Microsoft KB文章http://support.microsoft.com/kb/99261,您似乎可以在没有任何第三方库的情况下执行此操作。

遗憾的是,没有标准的C / C ++功能可以做到这一点。你应该能够写一个小功能,它将建立和使用我提到的不同方法和一些预处理程序指令在任何平台上工作。

如果您没有方便的方法来检测平台,我可能会推荐使用cmake。

答案 2 :(得分:1)

另一种方法是使用跨平台的OpenGL,Qt或SDL并编写图形控制台。这可以在许多roguelike游戏中看到,例如Dwarf Fortress

答案 3 :(得分:0)

在UNIX中尝试

system("clear")

clrscr()可能无法在UNIX中运行,因为某些编译器不支持conio.h