我目前正在为学校编写一个C ++程序,其中包括将输入作为一个变化量,然后告诉用户他们需要多少个季度,硬币,镍币和便士进行更改。 但是,如果用户输入任何类型的字符或字符串,程序将进入无限循环,无限期地打印两三个消息。 我可以用一种函数或其他方法来防止这种情况发生吗?
编辑:这是我认为代表问题的一些代码
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cctype>
#include <sstream>
using namespace std;
int main ()
{
cout << "\nMake Change v0.6.4\n";
cout << "Type 0 at any time to exit the program.\n";
char confirmExit;
int amount;
while (tolower(confirmExit) != 'y')
// allows the user to continue using the program with having to type a.out everytime
// but quit the application at any time with two keystrokes and
// confirmation so as to not accidentally exit the program
{
cout << "\nEnter the amount of change as an integer: ";
// input total cents to be worked with
cin >> amount;
if ((amount)!int)
{
cout << "\nMake sure to type an integer!\n";
}
else if (amount == 0)
{
cout << "Are you sure you want to exit the program(y/n)? ";
cin >> confirmExit;
// confirmation to prevent accidentally exiting out
}
cout << "\n";
return (0);
}
答案 0 :(得分:1)
在C ++中,所有内容都是位,并且可以进行隐式转换以将字符串或其他形式的数据转换为int值。你可以在标准库中使用限制头文件,并设置输入的最大值和最小值的界限。如果你不能得到它,那么在下面评论。我会发布代码。
此链接可能有用 - 访问http://lolengine.net/blog/2012/02/08/selectively-restrict-implicit-conversions
答案 1 :(得分:0)