Nick Mudry
Nick Mudry

Reputation: 3

Check if "cin" is a string

I have a simple little script I am coding, and I am trying to not allow people to enter a string, or if they do make it revert to the beginning of the function again. Here's the input code I have:

int main()
{
    cout << "Input your first number" << endl;
    cin >> a;
    cout << "Input your second number" << endl;
    cin >> b;
}

The rest of the code beyond this part works just fine for what's going on, although if a string is entered here it obviously doesn't work.

Any help would be appreciated.

Upvotes: 0

Views: 11062

Answers (3)

KingsOfTechENG
KingsOfTechENG

Reputation: 57

There's a library function may help,you can check it after input:

int isdigit(char c);

Tips: 1.You should include such files :

# include <ctype.h>

2.If c in 0 ~ 9 ,return 1 ; else return 0.

Upvotes: 0

fscan
fscan

Reputation: 433

Every input is a string. If you want to know if a entered string can convert to a number, you have to read in a string and try to convert it yourself (eg with strol).

An alternative would be to check if the reading from cin failed, but personally i don't like it because cin.fail() covers more error situations than just a failed type conversion.

Upvotes: 0

taocp
taocp

Reputation: 23624

You may find this post useful,

How to check if input is numeric in C++

Basically you can check the input, whether it is numeric value or not. After checking whether the given input is numbers, then you can add a while loop in main to ask user to repeat if input is not a valid number.

Upvotes: 1

Related Questions