【发布时间】:2023-03-10 05:30:01
【问题描述】:
我有一个简单的程序,它启动一个循环计时器,然后进入解析任何输入数据的 getline 循环。然而,每当定时器信号出现时,它都会结束 getline 函数,看起来好像用户按下了回车键。我怎样才能阻止信号这样做?或者如果做不到这一点,我如何区分真正的返回压力和信号?后者不太理想,因为我必须在 400Hz 下运行这个微分代码。
下面是我目前用来获取一行的代码。空白输入将重新打印 APP > 行,而任何其他输入都会通过。
do
{
std::cin.clear();
line.clear();
std::cout << "APP > ";
std::getline(std::cin, line);
}
while (line.length() == 0);
谢谢大家
马特
【问题讨论】:
-
你没有检查
std::cin的状态。我想知道是否在警报响起后设置了故障位。 -
啊哈,这似乎是正确的。我之前曾尝试比较 failbit 和 badbit 的直接状态,但没有运气,但似乎使用 fail() 函数可以解决问题。谢谢!
-
我已将评论作为答案,因此您可以关闭此问题。