如何在C++中将光标位置设置为行首?

Pre*_*ity 1 c++ linux

所以我试图创建一个代码的一部分,然后覆盖它.像这样:

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

Jos*_*eld 8

这就是回车符所用的:\r.它以打字机的机制命名,它将纸架返回到右侧,这样打字员可以从一行的开头继续打字.试试这个:

std::cout << "10 seconds have passed";
std::cout << "\r11";
Run Code Online (Sandbox Code Playgroud)

当然,两者之间没有延迟(也许除了在I/O等),你不可能看到的变化,但你至少会看到输出11 seconds have passed10无处可见.

如何显示回车完全取决于您输出的内容,但这是它的意图.对于更复杂的跨平台终端输出,请查看ncurses.


Mar*_*ban 5

#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