0

我正在制作一个 c++ 游戏,并且在某一时刻用户必须输入一个 int。如果玩家输入一个字符,游戏就会出现故障。

我不想弄清楚这个故障是什么,我只想感知玩家是否输入了一个字符并从那里解决。

4

3 回答 3

3

如果你使用 cin 来获取输入,最简单的解决方案如下:

int input;
cin >> input;
if (!cin)
    //handle char not being an int
//continue

这背后的技巧是,如果 cin 无法将输入转换为正确的类型,它实际上会进入失败状态。然而,根据您的游戏如何运作以及输入的上下文是什么,这可能还不够。显然,如果您不使用 cin,则必须检查您使用的流是否具有相同的行为。

于 2013-08-21T18:04:08.740 回答
0

我不确定您使用的是什么形式的输入,但如果它是基于控制台的,以下可能会有所帮助:

http://www.parashift.com/c++-faq/istream-and-ignore.html

于 2013-08-21T17:58:42.480 回答
0
int x;

cout << "Enter an integer: ";

while (true) {
  if (cin >> x) { 
      // integer          
      cout << x << " is a valid number!";
      break;
  } else { 
      // not an integer          
      cout << "Enter an integer: ";
      cin.clear();
      while (cin.get() != '\n') ;
  }
}
于 2013-08-21T19:04:29.790 回答