21xrx.com
2024-09-20 05:56:57 Friday
登录
文章检索 我的文章 写文章
C++清除屏幕:如何在程序中清空控制台屏幕?
2023-06-29 09:22:20 深夜i     --     --
C++ 控制台 清除屏幕

在 C++ 中,清除控制台屏幕似乎是一个基本的需求。对于初学者来说,也许会觉得这是一个非常困难的问题,但实际上它并不难。本文将介绍几种清除屏幕的方法。

方法一:使用 system 函数

使用 system 函数可以让我们调用操作系统的命令,在控制台中输入以下代码即可清空控制台屏幕:


system("cls");

该代码使用了操作系统的命令,因此运行速度较快,但并不是最佳实践。因为这种做法依赖于操作系统的命令,在不同的操作系统上的表现可能不一致。

方法二:使用 Windows.h 头文件

Windows.h 头文件中的 SetConsoleCursorPosition 函数可以用来移动光标的位置从而清空屏幕。以以下代码为例:


#include <Windows.h>

int main()

{

  COORD topLeft = 0;

  HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);

  CONSOLE_SCREEN_BUFFER_INFO screen;

  DWORD written;

  GetConsoleScreenBufferInfo(console, &screen);

  FillConsoleOutputCharacterA(

    console, ' ', screen.dwSize.X * screen.dwSize.Y, topLeft, &written

  );

  FillConsoleOutputAttribute(

    console, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE,

    screen.dwSize.X * screen.dwSize.Y, topLeft, &written

  );

  SetConsoleCursorPosition(console, topLeft);

  return 0;

}

代码中的 COORD topLeft 变量代表左上角的位置,Handle console 变量打开控制台窗口并使我们能够使用 CONSOLE_SCREEN_BUFFER_INFO 结构体中的其他信息。FillConsoleOutputCharacterA 函数用 ' ' 填充控制台的每个字符,FillConsoleOutputAttribute 函数将所有字符的颜色设置为默认值,SetConsoleCursorPosition 函数移动光标到屏幕的左上角。

方法三:使用 ANSI 转义码

另一种将清屏命令写入 C++ 代码的方法是使用 ANSI 转义码。以以下代码为例:


#include <iostream>

#include <cstdlib>

int main()

{

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

  return 0;

}

代码中输出了一些看起来很奇怪的字符和符号,这些是 ANSI 转义码。"\033[2J" 表示清屏,"\033[1;1H" 表示将光标移动到行首。

结论

清空控制台屏幕是常见的 C++ 编程需求,这里介绍了三种方法。在选择哪种方法的同时,需要考虑到代码的移植性和可读性。一般来说,使用 Windows.h 头文件是最好的选择,因为它比较灵活,代码也比较可读。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复