C ++ cout覆盖同一行的数组

时间:2018-10-06 18:02:13

标签: c++

我用C ++制作了一个简单的Turing机器,它从.txt文件中读取输入,然后在终端中cout的输出。问题是每次char移动时它将其打印在下一行上,我想要的是在同一行上引用输出,因此它只会被覆盖。是的,我尝试使用“ \ r”,但是它只会打印第一个字符而不是整个数组

        for (int j = 0; j < rule; j++)
    {
        cout << tape[j];
        //Sleep(1);
    }
    cout << endl;

2 个答案:

答案 0 :(得分:0)

我想这就是你想要的:

for (int j = 0; j < rule; j++)
{
    std::cout << tape[j] << "\r";   //  \r puts cursor back to the start
    Sleep(1000);  //Sleep takes milliseconds so for 1 second you need 1000
}
std::cout << std::endl;

\ r不适用于所有输出设备。如果您真的想控制在屏幕上的绘制位置,则应查看ncurses。 https://en.wikipedia.org/wiki/Ncurses

答案 1 :(得分:0)

我发现使用 System(“ CLS”)帮助我解决了问题,在cout之后清除了终端屏幕,但是由于它是for循环,因此会再次使用新值打印数组< / p>

for (int j = 0; j < rule; j++)
{
     cout << tape[j];
        //Sleep(1);
    }
    cout << endl;
    system("CLS");
}
return 0;