撤消打印到命令行的换行符(\ n)

时间:2010-12-25 17:31:33

标签: c++ c stdout

printf("Error %d\n", 1);
printf("\nStatus: %d%%", 50);

打印

Error 1

Status: 50%

在此设置中,是否有机会在Error 2\nError 1\n之间插入\nStatus: 50%。我了解\r\b可用于在同一行中更改印刷文本(例如,\n之间只有一个Error 1 }和Status: 50%),但我可以更改上一行中的文字吗?

谢谢!

3 个答案:

答案 0 :(得分:7)

@Ryan说的话。

解释原因:stdout是一些不必是终端的抽象流。它可以是文件,管道,套接字,打印机,文本到语音设备等等。在许多情况下,你要求做什么是没有意义的。因此,您需要一些专门用于终端的库。

答案 1 :(得分:3)

抱歉,你不能。

但您可以发出系统调用以清除整个屏幕,例如system("clear")(取决于操作系统)。

或者像评论中提到的Kos那样使用ncurses

答案 2 :(得分:2)

您可以使用ANSI Escapesequences将“光标”向上移动一行:

void cursorOnLineUp(void) { printf("\033[1A"); }

或将其设置为特定位置:

void setCursor(int column, int row) { printf("\033[%d;%dH", row, column) }

没有尝试过C ++,但成功地将它用于ANSI-C中的简单游戏!