如何清除终端中的矩阵,并在同一位置打印另一个矩阵

时间:2017-03-21 12:40:22

标签: c++ matrix terminal

我在终端上打印一个矩阵。经过计算,我得到了另一个矩阵。我想打印新矩阵,以取代旧矩阵。如何清除终端中的旧矩阵? 此代码ID用于创建矩阵。完成计算后,此函数将创建一个新矩阵。

void TheNewMatrix(char newGame[20][50]){

    for(int row=0; row<20; row++){
        for(int col=0; col<50; col++){
            newGame[row][col]=nextStep[row][col];
            cout<<newGame[row][col];
        }
        cout<<endl;
    }
}

这是另一个代码:

       for(int i=0;i<count;i++){
            Sleep(1000);
            Roles(newGame);
            TheNewMatrix(newGame);
        }   

创建一些矩阵,但我希望只在终端中显示一个矩阵。我试过了&#39; \ r&#39;和&#39; \ b&#39;,但他们没有工作。

2 个答案:

答案 0 :(得分:1)

ANSI control codes允许您更改终端属性(换行符和返回是它们的两个示例),但这些只能在一行上工作。 记下允许您清除屏幕并移动光标的命令:

(来自Clearing output of a terminal program in Linux C

printf("\033[XA"); // Move up X lines;
printf("\033[XB"); // Move down X lines;
printf("\033[XC"); // Move right X column;
printf("\033[XD"); // Move left X column;
printf("\033[2J"); // Clear screen
...

请注意IO被缓冲,并且许多系统在收到换行符后只“刷新”要输出的字符串,因此控制命令仅在手动刷新缓冲区时生效:fflush(stdout); < / p>

注意:在Windows中对这些代码的支持是有限的,请查看上述维基百科文章中的“windows”部分以获取详细信息。

答案 1 :(得分:0)

正如@nwp指出的那样,您需要一个特定于平台的代码来清除控制台屏幕。但是,在名为cstdlib的模块中,有一个函数system,它调用系统标准命令处理器的特定命令。因此,在Windows上,您可以使用

system("cls");

在Linux上,

system("clear");