是否有一种简单的方法可以用可互操作的代码在CLI中清理屏幕/保持输出窗口,避免conio.h和ncurses.h



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

她调用conio.h库,这是MS-DOS编译器的旧头文件,正如我在那里读到的:https://stackoverflow.com/a/8792443/6723830
我得到了另外两个错误,因为使用了system("cls");getch();,这是仅限windows的函数,从我所学到的。

在我的研究中,我没有找到适合这些功能的替代品。至少不容易解决适合我目前的编程水平。我正在考虑使用ncurses.h,但是我已经阅读了这一页,这真的很有趣,但是NCurses被描述为过度杀伤…

那么,是否存在一种跨平台的方法来清理屏幕并保持输出窗口直到用户点击任何键?NCurses真的像人们说的那样矫枉过正,还是目前最好的解决方案?
我想,在接下来的作业中,我将不得不做这样的CLI。当然,我可以简单地使用MS-only函数,这样她就不会抱怨了,但我更希望能够生成可互操作的代码。

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

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');
}

最新更新