You can do cout << '
';
to jump to the beginning of the current line, but moving upwards is system-specific. For Unix, see man termcap
and man terminfo
(and search for cursor_up
). On ANSI-compatible terminals (such as most modern terminals available on Unix), this works to move up: cout << "e[A";
.
Don't try seeking in cout
, it's unseekable most of the time (except when redirected to a file).
As mentioned in other answers, using the ncurses (or slang) library provides a good abstraction for terminal I/O on Unix.
Instead of filling with spaces (which is error-prone, because not every terminal is 80 characters wide), you can do
+ clr_eol
: std::cout << "
e[K" << std::flush
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…