当前位置:  开发笔记 > 编程语言 > 正文

如何使用C++在Windows和Linux中清除控制台

如何解决《如何使用C++在Windows和Linux中清除控制台》经验,为你挑选了4个好方法。

我需要一个跨平台的解决方案来清除用C++编写的Linux和Windows控制台.这样做有什么功能吗?另请注意,我不希望最终用户程序员必须更改程序中的任何代码以使其清除Windows vs Linux(例如,如果必须在两个函数之间进行选择,则必须做出决定在运行时或在编译时自动执行).



1> fmsf..:

在两个平台上都没有通用命令来清除控制台.

#include 

void clear_screen()
{
#ifdef WINDOWS
    std::system("cls");
#else
    // Assume POSIX
    std::system ("clear");
#endif
}


这是最简洁,通用的答案,在99%的案例中都有效.应该是接受的答案.

2> coppro..:

简短的回答:你做不到.

更长的答案:使用curses库(Unix 上的ncurses,Windows 上的pdcurses).NCurses应该可以通过你的包管理器获得,并且ncurses和pdcurses都具有完全相同的接口(pdcurses也可以独立于控制台创建窗口,其行为类似于控制台窗口).

最困难的答案:使用#ifdef _WIN32和类似的东西使你的代码在不同的操作系统上采取不同的行为.



3> Nicola Bonel..:

在linux上,可以清除控制台.最好的方法是将以下转义序列写入stdout:

write(1,"\E[H\E[2J",7);

这是/ usr/bin/clear所做的,没有创建另一个进程的开销.


要清楚: [H将光标移动到屏幕的左上角 [2J擦除屏幕任何想要更多细节的人都应该谷歌"ANSI转义序列".

4> 小智..:

一个简单的技巧:为什么不使用宏结合使用system()命令清除控制台来检查操作系统类型?这样,您将使用适当的控制台命令作为参数执行系统命令.

#ifdef _WIN32
#define CLEAR "cls"
#else //In any other OS
#define CLEAR "clear"
#endif

//And in the point you want to clear the screen:
//....
system(CLEAR);
//....

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有