C++找出覆盖同一行的数组

C++ cout an array overwriting the same line

本文关键字:一行 数组 覆盖 C++      更新时间:2023-10-16

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

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

我认为这就是你想要的:

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

我发现使用System("CLS"(帮助我解决了我的问题,它在 cout 后清除了终端屏幕,但由于它是一个 for 循环,它再次打印带有新值的数组

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