有没有一种简单的方法可以使用可互操作的代码在 CLI 中清除 screen/hold 输出 window,避免 conio.h 和 ncurses.h?

Is there a simple way to clean screen/hold the output window in CLI with an interoperable code, avoiding conio.h and ncurses.h?

我刚开始学习计算机科学。编程老师选择了C++来教我们过程式编程,因此给了我们代码示例和练习。我们得到的第一个样本是一个 CLI“找到正确的数字”游戏。真正的第一项任务是简单地重新输入源代码,编译它并 运行 它。我已经使用 Linux 好几年了(尽管我根本不是计算机呆子),当我编译代码时,它失败了。查看错误日志让我注意到我的老师显然没有考虑 Unix 用户。

她调用 conio.h 库,这是 MS-DOS 编译器的旧 header,正如我在那里读到的那样:
由于使用 system("cls");getch();,我得到了另外两个错误,据我所知,它们是 Windows-only 函数。

在我的研究过程中,我无法为这些功能找到合适的替代品。至少不是适合我当前编程水平的简单解决方案。我正在考虑使用 ncurses.h,但我读过 this page,这真的很有趣,但 NCurses 被描述为矫枉过正......

那么,有没有一种 cross-platform 方法可以清洁屏幕并保持输出 window 直到用户按下任意键? NCurses 是否像人们所说的那样矫枉过正,还是目前最好的解决方案?
我想我将不得不在即将到来的任务中制作这样的 CLI 东西。当然,我可以简单地使用 MS-only 函数,这样她就不会抱怨,但我宁愿能够生成可互操作的代码。

清除控制台的最常见和可移植的方法window是简单地编写一个函数来输出一堆换行符,例如:

void clearScreen()
{
    for(int i = 0; i < 15; ++i)
        std::cout << '\n';
}

为了保持输入,你可以写一个暂停函数,比如:

void pause() // wait for input and discard any unnecessary input 
{
    std::cin.get(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}