15

我想清除 CMD 屏幕。我看到了一些选择。首先是

system("cls");  

但我不想使用系统,因为它使它依赖于 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

4 回答 4

33

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

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

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

您可以将其包含在一个函数中,例如clrscr(),取决于您的实现。

于 2015-08-14T11:00:19.560 回答
8

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

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

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

不幸的是,没有标准的 C/C++ 函数可以做到这一点。您应该能够编写一个小函数,该函数将使用我提到的不同方法和一些预处理器指令在任何平台上构建和工作。

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

于 2013-06-27T06:30:54.063 回答
0

在 UNIX 中尝试

system("clear")

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

于 2013-06-27T06:23:51.137 回答
0

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

于 2013-06-27T06:35:12.000 回答