I\'m doing a Banking System project and need to make sure that every input is valid(program has to be robust). If invalid input is given then user has to enter again.
Bu
Here is another approach that might help; first writing to std::string and then going over all elements in the string checking if they're digit. Using header and , although in c++11 you can use std::stoi if your compiler supports it.
If you write: 141.4123, the result will be 141 after converting (if you let the user type '.'), the result will be truncated because you convert to an int.
Working example:
int str_check(string& holder, int& x)
{
bool all_digits = true; // we expect that all be digits.
if (cin >> holder) {
for(const auto& i : holder) {
if (!isdigit(i) && i != '.') { // '.' will also pass the test.
all_digits = false;
break;
}
}
if (all_digits) {
x = atoi(holder.c_str()); // convert str to int using std::atoi
return 1;
}
else
return 0;
}
}
int main()
{
int x{};
string holder{};
while (1)
{
if (str_check(holder, x))
cout << x << '\n';
}
return 0;
}