C ++感知字符

时间:2013-08-21 17:51:29

标签: c++ validation

我正在制作一个c ++游戏,用户必须输入一个int。如果玩家输入了一个角色,游戏就会出现故障。

而不是弄清楚这个故障是什么,我想知道玩家是否输入了一个字符并从那里开始工作。

3 个答案:

答案 0 :(得分:3)

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

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

这背后的诀窍是,如果cin无法将输入转换为正确的类型,则它实际上会进入失败状态。但是,根据游戏的工作方式和输入的上下文,这可能不够。显然,如果您不使用cin,则必须检查您使用的流是否具有相同的行为。

答案 1 :(得分:0)

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

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

答案 2 :(得分: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') ;
  }
}