试图让我的程序拒绝输入数字

时间:2016-07-10 17:40:37

标签: c++

我实际上正在做一个家庭作业问题而且我已经完成了这个程序。我唯一的问题是当我输入一个字符或数字时,它无法拒绝它。这是问题所在:

编写程序以检查以下语言中的平衡符号:C ++(/ * * /,(),[],{})。

我已经设置了一个if语句列表,以确保是否存在不均匀的符号数量(/ * * /,(),[],{})它将检测到它。我唯一的问题是,当我输入一个数字时,它不会被我的任何if语句(自然地)过滤掉,并且它作为一个平衡的传递来传递。条目。

回到我最初的问题,有没有办法可以让任何' int'检测到并被拒绝?这是我试图了解我想要做的事情之一:

if (top == int)
    {
        cout << "Invalid Entry"; \\an integer is detected
        main ();  \\due to an int input it would rout back through to start
    }

我是一个总菜鸟,所以任何帮助或指向正确的方向都会很棒

2 个答案:

答案 0 :(得分:3)

您可以检查有效的整数输入,只需拒绝这些:

 std::string input;
 while(std::cin >> input) {
      int dummy;
      std::istringstream iss(input);
      if(cin >> dummy) {
          cout << "Invalid Entry" << endl; //an integer is detected
          continue; // Read again
      }
      // ... process input
 }

答案 1 :(得分:0)

有许多可能的解决方案,但我最喜欢的一个是调用一个能为我处理它的功能。

bool IsInteger(string line) {
    for (int i=0; i<line.size(); ++i) {
        if (!isdigit(line[i])) {
            return false;
        }
    }

    return true;
}

int main() {
    string input;

    while (cin >> input) {
        if (IsInteger(input)) {
            cout << "Integer detected!" << endl;
        } else {
            // Do stuff
        }
    }
}