【问题标题】:How do you clear the screen in a console application written in C++?如何在用 C++ 编写的控制台应用程序中清除屏幕?
【发布时间】:2014-04-10 09:53:08
【问题描述】:

这是我的第一篇文章。如何在用 C++ 编写的控制台应用程序中清除屏幕?请理解我不想使用任何额外的预处理器。必须这样做:

cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n";

我可以这样做吗,有更专业的方法吗?

【问题讨论】:

  • 没有标准的方法来做到这一点。充其量你的选择可以标准化为一个多平台库,如ncurses。显然,依赖于系统的解决方案既可行,而且数量众多。
  • const int ROWS_ON_SCREEN = 50;常量字符串 CLEAR_SCREEN('\n', ROWS_ON_SCREEN);这有点整洁。然后你可以调用 cout
  • @GrahamGriffiths 你不想那样做。您必须记住,iostreams 等可以重定向,这是一个糟糕的解决方案。您不想依赖可能导致问题的行为,如果不是打印到控制台,而是更改为文件等。

标签: c++ iostream


【解决方案1】:

在纯 C++ 中你不能,因为 C++ 甚至没有控制台的概念。您基本上可以打印到任何东西(文件、打印机、仪表板),甚至重定向到另一个程序等。

因此它取决于操作系统或依赖于您使用诸如 ncurses 之类的库

例如,在 windows 中,您可以执行以下操作

#include <stdlib.h>

int main(int argc, char* argv[])
{
  system("cls");
  return 0;
}

【讨论】:

  • 嗯,我会的。谢谢。 :) 我还有一个问题,有人告诉我避免使用允许您执行诸如 system("pause")、system("cls") 等操作的库。这是为什么?不是与兼容性和安全性有关吗?这不就像在命令提示符下一样吗?还是该库允许您使用命令提示符?
  • 是的,使用系统将调用发送到操作系统,然后他们决定如何处理它,以便兼顾兼容性,即操作系统是否能够处理此调用以及出于安全原因,它并不总是一个理想的解决方案。对于小型应用程序,即 uni 项目等,这不是一个真正的问题
  • @const_ref 除非你敢使用它,除非你的 uni 挂了你。
  • @Mayerz 哈哈,是的,这将是一个问题。 YMMV!
  • 他们告诉我们这总是不好的做法,你可以使用execve,但它并不那么容易使用:)
【解决方案2】:

太简单了,取决于你的操作系统。

在linux上使用>

 system("clear");

在windows上使用>

system("cls");

对于跨平台应用,您可以同时使用两者。它不会损害您的程序本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 2020-12-05
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多