【问题标题】:How to implement an "ENTER" case into a switch statement如何在 switch 语句中实现“ENTER”案例
【发布时间】:2019-11-04 19:59:05
【问题描述】:

我正在做一个课堂项目,我必须用 C++ 为咖啡店创建一个订购系统。如果适用,我正在使用 Visual Studio。

在项目大纲中,老师说有一个简单的整数输入来导航菜单;但是,他指定如果没有输入任何内容(我假设我所看到的称为“热输入”),它会计算收据并重置程序。

我已经尝试过 cin.get() 并检查缓冲区是否为 '\n',这工作正常,但我当前的实现似乎只能捕获一个热输入,并且无法滚入开关盒.

为了从用户那里获取输入,我目前已经尝试过:

        // Get menu input
        if (cin.get() == '\n') {    // Check if user hot entered, assign value if so
            input = 0; 
        } else {                    // If not, do it normally
            input = cin.get();
        }

但是,这并不完全正确,并且无法捕获输入的整数以用于 switch 案例。我不确定这种实现在推理上是否合理,或者是否有更简单的途径来提供热输入的案例。

我没有收到任何错误,所以我认为我对这些函数如何工作的理解有问题,或者我的实现在逻辑上存在缺陷。

谢谢。

【问题讨论】:

  • 您好,欢迎来到 SO。考虑查看 C++ 输入。这是一个开始的好地方 -> stackoverflow.com/questions/41600981/…
  • 存储cin.get的结果,你想调用一次而不是两次
  • 我使用 int 类型作为输入,所以如果 cin.get() 返回 '\n' 它不会正确存储在该变量中?

标签: c++ command-line-interface


【解决方案1】:

您使用了两次cin.get()input = cin.get(); 中的第二个 cin.get() 是多余的。

// Get menu input
    input = cin.get();
    if (input == '\n') {    // Check if user hot entered, assign value if so
        input = 0; 
    } 
//else {      // If not, do it normally
//         input = cin.get();
//     }

【讨论】:

  • 谢谢!我发现了我的第二个问题,我在我的 switch case 中使用整数值而不是字符。
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 2010-10-23
  • 1970-01-01
  • 2021-03-22
  • 2019-04-07
  • 2012-07-24
  • 2014-01-03
  • 1970-01-01
相关资源
最近更新 更多