检测数字的方法而不是字符串中的字母。 (目前使用istringstream)

时间:2014-11-16 22:55:46

标签: c++ int cin istringstream

我制作了一个简单的游戏程序,并且要求玩家可以选择撤消一些动作(撤消n)。

我让用户输入一个命令(撤消n),然后将后半部分放入int中。基本上,我希望程序在输入除数字之外的任何内容时停止用户。因此,如果用户键入undo f,它将不会将f转换为它的数字形式(或者至少是我认为它会做的那样),但它会导致错误。我搜索了一会儿,找不到任何有效或有意义的东西。

try {
   int undo;
   istringstream is(userInput.substr(5, userInput.length()));
   is >> undo;

   for (int numOfUndos = undo; numOfUndos > 0; numOfUndos--) {
      board.UndoLastMove();
   }
   moveValidated = true;
}
catch (exception &e) {
   cout << "/-----------------------------/" << endl;
   cout << e.what() << endl;
   cout << "/-----------------------------/" << endl;
}

如果可能的话,我想用我现在拥有它或用cin的方式。另外,请原谅我,但我还在学习C ++并且不了解很多高级技巧,所以如果有一个复杂的方法可以原谅我,如果它需要我理解一点。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

这对我有用。再次感谢。

  

游戏描述并不是真正与你的问题相关:如何   将字符串转换为整数并检查它是否失败。要做到这一点,   if(是&gt;&gt;撤消){working} else {failed} UndoLastMove是否会抛出   例外? - 尼尔柯克