用于检查输入是否为整数的C ++函数?

时间:2017-01-19 04:22:57

标签: c++ debugging int infinite-loop

我目前正在为学校编写一个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);
}

2 个答案:

答案 0 :(得分:1)

在C ++中,所有内容都是位,并且可以进行隐式转换以将字符串或其他形式的数据转换为int值。你可以在标准库中使用限制头文件,并设置输入的最大值和最小值的界限。如果你不能得到它,那么在下面评论。我会发布代码。

此链接可能有用 - 访问http://lolengine.net/blog/2012/02/08/selectively-restrict-implicit-conversions

答案 1 :(得分:0)

查看下面定义的功能:

atoi

strtol