【问题标题】:C++ get user input without stopping infinite loopC++ 在不停止无限循环的情况下获取用户输入
【发布时间】:2021-11-27 16:29:54
【问题描述】:

我正在从事一个 c++ 项目,我应该在其中模拟以不同采样频率实时工作的传感器(温度、湿度、压力等)。

为此,我创建了一个无限循环。我希望用户能够退出循环。我的问题是,如果我尝试使用传统方法(cin、scanf、getc 等)获取用户输入,则循环将停止。

此外,我需要控制台来显示示例。

如果没有这些方法,您如何获得用户输入(任何输入都可以)?

这是我的代码原型:

while(!user_input){
    sampling_functions();
    display_samples();
}

提前致谢:)

【问题讨论】:

  • 你的意思是,你想捕捉按键而不需要按 ENTER 键?
  • 是的,没有回车键但也没有停止代码
  • 你会如何使用线程?我做了几次尝试,但没有成功
  • 你应该进行一次完整的尝试,并展示你的整个代码。现在只是汽化器。本网站旨在解决您已经尝试解决的问题。
  • 我设想一个线程用于阻塞输入,另一个用于循环函数,当用户输入适当的输入时,将标志设置为break 退出循环。但是你已经声明你想在没有 Enter 键的情况下捕获输入,所以这将是一个不同的解决方案。

标签: c++ user-input infinite-loop


【解决方案1】:

如果您想在没有回车键的情况下执行此操作,您将不得不变得复杂。您可以编写一个实际的 GUI 程序来监视按键事件。或者您可以编写一个ncurses 程序,将终端置于原始输入模式,这样您就可以在输入原始键时看到它们。

您可以在不实际使用 ncurses 的情况下执行后者。这个答案可能会对您有所帮助:

Getting raw input from console using C or C++

如果您这样做,请确保在程序退出之前将终端重新设置为非原始模式,否则您的用户会对您感到沮丧。

这是您的第一个问题。我不知道您是经验丰富的程序员还是学校的学生。如果您是在校学生,您可能需要考虑这对您来说有多重要。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2020-01-14
    • 2011-04-25
    • 1970-01-01
    • 2012-03-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多