C++ cin.ncurses中忽略等效项`
我的C++ cin.ncurses中忽略等效项`,c++,ncurses,C++,Ncurses,我的系统(“暂停”)有一个更简洁的变体,它等待用户按enter键: #include <iostream> void pause() { std::cin.get(); std::cin.ignore(); } #包括 无效暂停() { std::cin.get(); std::cin.ignore(); } 但是,我找不到system(“CLS”)(或system(“clear”))的干净变体,因此我将整个应用程序切换到ncurses。 经过一番阅读,我发现nc
系统(“暂停”)
有一个更简洁的变体,它等待用户按enter键:
#include <iostream>
void pause()
{
std::cin.get();
std::cin.ignore();
}
#包括
无效暂停()
{
std::cin.get();
std::cin.ignore();
}
但是,我找不到system(“CLS”)
(或system(“clear”)
)的干净变体,因此我将整个应用程序切换到ncurses
。
经过一番阅读,我发现ncurses
有自己的一组I/O函数,std::cout
和std::cin
被echo()
和getch()
取代
该函数
pause()
也必须转换为ncurses
,但我的问题是我不知道与std::cin的正确等价物。忽略您可以使用这些函数(不仅仅是ncurses)放弃诅咒中的输入:
-
flushinp
例程将丢弃由
用户,但程序尚未读取
-
如果启用了
intrflush
选项(bf为真),并且中断键
按键盘上的键(中断、中断、退出),所有输出在
tty驱动程序队列将被刷新,从而产生更快响应的效果
打断,但导致诅咒者对什么是错误的想法
在屏幕上。禁用该选项(bf为FALSE)可防止刷新。
该选项的默认值继承自tty驱动程序设置。
窗口参数被忽略
离题:如果只想在回车时退出,您可能会发现void pause(){std::cin.ignore(std::numeric_limits::max(),'\n');}
。您的版本可能会在流中留下垃圾,以供后续流读取。您不能使用getch()
本身来实现pause()
的效果吗?您需要在getch()
之前调用noecho()
,以隐藏输入字符。