Clear Screen using C++

2020-02-02 12:49发布

I would like to clear the CMD screen I have seen a few options first is

system('clr');  

but dont want to use system cause then it makes it dependent on windows, same with the unix version

if i try

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

then my next line of text is at the bottom of the screen and i want it at the top. How can I clear the screen and get the text back to the top of the screen?

Thus say I have this.

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;

this will clear the screen then put mymenu at the bottom of the screen... how can i make it clear screen and put the question/answers back up top of screen.

标签: c++
4条回答
可以哭但决不认输i
2楼-- · 2020-02-02 13:05

Try this: it works both on Linux and Windows.

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

This is a string of special characters that translate to clear the screen command.

You can enclose this in a function like e.g. clrscr() depending on your implementation.

查看更多
霸刀☆藐视天下
3楼-- · 2020-02-02 13:14

If you want a solution that will work on Windows, Mac & Linux/UNIX, you will need to come up with your own implementation. I do not believe that there is a single way to do it that works on all platforms.

For Mac/Linux/UNIX/BSD/etc., ncurses provides an easy way to do this (http://www.gnu.org/software/ncurses/).

For Windows, you will probably want to look into conio.h (http://en.wikipedia.org/wiki/Conio.h) or PDCurses (http://pdcurses.sourceforge.net/) or something similar. Alternatively, it would seem that you can do this without any third-party libraries, according to this Microsoft KB article: http://support.microsoft.com/kb/99261.

There is unfortunately no standard C/C++ function to do this. You should be able to write a small function which will build & work on any platform using the different methods I mentioned and some preprocessor directives.

If you don't have a convenient way to detect the platform, I would probably recommend cmake.

查看更多
够拽才男人
4楼-- · 2020-02-02 13:23

In UNIX try

system("clear")

clrscr() may not work in UNIX because some compilers do not support conio.h

查看更多
Bombasti
5楼-- · 2020-02-02 13:30

Another way would be to use OpenGL, Qt or SDL, which are cross-platform and write a graphical console. This can be seen in many roguelike games, for example Dwarf Fortress.

查看更多
登录 后发表回答