1

我做了一个简单的游戏程序,要求玩家有一个选项来撤消一些移动(撤消 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++ 并且不知道许多高级技术,所以如果有一种复杂的方法可以做到这一点,如果我需要一点理解,请原谅我。

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

4

1 回答 1

0

这对我有用。再次感谢。

游戏描述与您的问题并不真正相关:如何将字符串转换为整数并检查它是否失败。为此, if (is >> undo) { working } else { failed } UndoLastMove 会抛出异常吗?——尼尔·柯克

于 2014-11-17T01:44:12.000 回答