有没有办法将控制台滚动到空白部分?

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 是为了让下一个输入的文本换行。

【讨论】:

以上是关于有没有办法将控制台滚动到空白部分?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 控制台 - 大小合适仍然为滚动条留下空白空间

有没有办法在结合页面控制的滚动视图中自动布局图像?

有没有办法控制 Safari 鼠标滑动手势?

iOS页面控制滚动锁定

切换到 UITableView 控制器并滚动到部分的开头

分段控制和滚动视图,将视图保存在内存中