所以我试图创建一个代码的一部分,然后覆盖它.像这样:
10 seconds have passed
11 seconds have passed
12 seconds have passed
Run Code Online (Sandbox Code Playgroud)
不使用新行打印它.所以我不想使用这样的东西:
std::cout<<"10 seconds have passed\n"
std::cout<<"11 seconds have passed\n"
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我正在运行Kubuntu Linux
这就是回车符所用的:\r.它以打字机的机制命名,它将纸架返回到右侧,这样打字员可以从一行的开头继续打字.试试这个:
std::cout << "10 seconds have passed";
std::cout << "\r11";
Run Code Online (Sandbox Code Playgroud)
当然,两者之间没有延迟(也许除了在I/O等),你不可能看到的变化,但你至少会看到输出11 seconds have passed与10无处可见.
如何显示回车完全取决于您输出的内容,但这是它的意图.对于更复杂的跨平台终端输出,请查看ncurses.
#include <conio.h>
#include <consoleapi.h>
void gotoxy(short x, short y)
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD position = { x, y };
SetConsoleCursorPosition(hStdout, position);
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更好地在控制台中移动。(我不知道为什么它没有正确显示#include conio.h