我正在制作一个 c++ 游戏,并且在某一时刻用户必须输入一个 int。如果玩家输入一个字符,游戏就会出现故障。
我不想弄清楚这个故障是什么,我只想感知玩家是否输入了一个字符并从那里解决。
我正在制作一个 c++ 游戏,并且在某一时刻用户必须输入一个 int。如果玩家输入一个字符,游戏就会出现故障。
我不想弄清楚这个故障是什么,我只想感知玩家是否输入了一个字符并从那里解决。
如果你使用 cin 来获取输入,最简单的解决方案如下:
int input;
cin >> input;
if (!cin)
//handle char not being an int
//continue
这背后的技巧是,如果 cin 无法将输入转换为正确的类型,它实际上会进入失败状态。然而,根据您的游戏如何运作以及输入的上下文是什么,这可能还不够。显然,如果您不使用 cin,则必须检查您使用的流是否具有相同的行为。
我不确定您使用的是什么形式的输入,但如果它是基于控制台的,以下可能会有所帮助:
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') ;
}
}