如何设置在C ++光标位置到行首?(How do I set cursor position to

2019-10-17 10:28发布

所以我想,以使那里写东西的代码部分,然后将其覆盖。 像这样:

10 seconds have passed
11 seconds have passed
12 seconds have passed

不使用新的生产线进行打印。 所以我不希望使用这样的事情:

std::cout<<"10 seconds have passed\n"
std::cout<<"11 seconds have passed\n"

我该怎么做呢? 我跑Kubuntu的的Linux

Answer 1:

这就是回车符是什么: \r 。 这是打字机的机制纸架返回到右侧,这样的打字员可以从行的开头继续输入而得名。 尝试这个:

std::cout << "10 seconds have passed";
std::cout << "\r11";

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

如何显示回车完全取决于无论你输出到,但是这是它的意图。 对于更复杂的跨平台的终端输出,看看ncurses的 。



Answer 2:

#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);
}

如果您需要更好的控制台移动。 (我不知道为什么它没有显示corectly的#include CONIO.H



Answer 3:

尝试

cout<<"\roverride"

随着结尾没有换行符。 该\ R表示carage回报,这意味着跳转到行的开头。



Answer 4:

回车'\r'是负责移动回行首。

这并不是说你必须重写已写入,因为他们没有在显示屏上自动删除所有字符。

而且不要忘记调用性病的冲洗::法院,否则UNIX机器上,你可能看不到任何结果,直到它的刷新。



Answer 5:

除了\r (即带你回到行的开始),你也可以使用\b字符找回一个字符。 如果你必须做更多复杂的东西,你必须使用VT100转义码或某些库(如的ncurses)。



文章来源: How do I set cursor position to beginning of line in C++?
标签: c++ linux