所以我想,以使那里写东西的代码部分,然后将其覆盖。 像这样:
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
所以我想,以使那里写东西的代码部分,然后将其覆盖。 像这样:
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
这就是回车符是什么: \r
。 这是打字机的机制纸架返回到右侧,这样的打字员可以从行的开头继续输入而得名。 尝试这个:
std::cout << "10 seconds have passed";
std::cout << "\r11";
当然,两者之间没有延迟(也许除了在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);
}
如果您需要更好的控制台移动。 (我不知道为什么它没有显示corectly的#include CONIO.H
尝试
cout<<"\roverride"
随着结尾没有换行符。 该\ R表示carage回报,这意味着跳转到行的开头。
回车'\r'
是负责移动回行首。
这并不是说你必须重写已写入,因为他们没有在显示屏上自动删除所有字符。
而且不要忘记调用性病的冲洗::法院,否则UNIX机器上,你可能看不到任何结果,直到它的刷新。
除了\r
(即带你回到行的开始),你也可以使用\b
字符找回一个字符。 如果你必须做更多复杂的东西,你必须使用VT100转义码或某些库(如的ncurses)。