8

在 C++ 中,我试图返回一行来添加一些字符。到目前为止,这是我的代码:

cout << "\n\n\n\n\n\n\n\n\n\n\xc9\xbb\n\xc8\xbc"<<flush;
Sleep(50);

如您所见,我有 10 个换行符。在我的动画中,一个新的方块将从屏幕顶部落下。但我不知道如何备份这些行以添加我需要的字符。我尝试了 \r,但这并没有做任何事情,并且 \b 也没有上升到上一行。另外,flush到底是做什么的?我只用 C++ 编程了大约 2 天,所以我是新手 =P。

非常感谢!!!

基督教

4

3 回答 3

17

如果您的控制台支持VT100 转义序列(大多数都支持),那么您可以使用ESC [ A,如下所示:

cout << "\x1b[A";

将光标向上移动一行。根据需要重复。

于 2012-04-07T20:28:32.967 回答
4

在 Windows 中,您可以使用此示例

在那里你将创建 CreateConsoleScreenBuffer() 然后使用 SetConsoleCursorPosition(console_handle, dwPosition);

于 2013-03-12T10:05:24.427 回答
0

cout将首先写入内部缓冲区并仅定期将其输出到屏幕,而不是针对插入的每个字符。这是出于性能原因。

flush告诉它现在清空缓冲区并将其显示在屏幕上。

您应该考虑像ncurses这样的库。

于 2012-04-07T20:29:44.657 回答