有没有办法将控制台滚动到空白部分?
Posted
技术标签:
【中文标题】有没有办法将控制台滚动到空白部分?【英文标题】:Is there a way to scroll the console to a blank section? 【发布时间】:2020-07-11 05:22:12 【问题描述】:我正在尝试用 C++ 编写我自己的基于文本的冒险游戏。 我想知道是否有一种方法可以滚动到控制台的空白部分,同时保留以前打印的文本?
所以看起来控制台正在被清除,但仍然可以向上滚动到上一个文本。
也许是一个滚动特定行数的函数?
让我知道你的想法。
【问题讨论】:
您使用的是windows? docs.microsoft.com/en-us/windows/console/… 【参考方案1】:嗯,解决方案很简单。
您可以使用 '\n'
特殊字符对一定数量的行运行循环。在这里,我定义了一个功能相同的函数:
void clear_screen()
for(int i=0; i<=20;i++)
std::cout<<"\n";
此函数将清除接下来的 20 行。
【讨论】:
这是一种解决方案,但它会在文本段落之间产生很大的空白。理想的功能是滚动直到所有先前的文本都消失,这样就可以开始打印,而文本正文之间没有间隙。【参考方案2】:我设法找到了解决方案:)
只想输出 20 个换行符的问题是有一个空格。
所以需要滚动来移动滚动条,然后直接退格以继续在连续段落中书写。
void scrollBy(int rows)
for (int i = 0; i < rows - 1; i++)
cout << "\n";
for (int i = 0; i < rows; i++)
cout << "\x1b[A";
cout << "\n";
末尾的 \n 是为了让下一个输入的文本换行。
【讨论】:
以上是关于有没有办法将控制台滚动到空白部分?的主要内容,如果未能解决你的问题,请参考以下文章