我需要检查用户是否只输入一个值,如果他输入了一个字母,或者只输入了一些没有数字的字符,然后显示一条错误消息并输入一个新值。例如,输入是"0";3.00〃;,输出为"0";无效值!请再试一次">
我想了解如何做到这一点,否则我没有在互联网上找到任何信息
#include <iostream>
#include <cmath>
using namespace std;
long long byaka(long long a, long long b, long long& k, long long& w)
{
if (b == 0)
{
k = 1;
w = 0;
return a;
}
long long d = byaka(b, a % b, k, w);
k -= (a / b) * w;
swap(k, w);
return d;
}
int main()
{
long long a, b, c, k, w, d;
cout << "A B C: n";
cin >> a >> b >> c;
d = byaka(a, b, k, w);
while (c % d != 0)
{
cout << "Impossible! Vvedite A B C: n";
cin >> a >> b >> c;
d = byaka(a, b, k, w);
}
long long t = c / d * k, t2 = b / d;
if (t == 0) cout << 0 << " " << c / d * w;
if (t > 0) cout << t + t2 * (-(t / t2)) << " " << c / d * w - a / d * (-(t / t2));
if (t < 0) cout << t + t2 * (-((t - t2 + 1) / t2)) << " " << c / d * w - a / d * ((-((t - t2 + 1) / t2)));
}
通常,如果您需要验证用户输入了什么,您可以让他们将输入作为字符串输入。然后你可以检查它是否都是数字,如果是,就转换成数字。如果不是,你通常会给他们一条错误消息,并要求他们再次输入。
bool check_only_digits(std::string const &s) {
if (s.find_first_not_of("0123456789") != std::string::npos) {
std::cerr << "Digits only please!";
return false;
}
return true;
}
std::string s;
std::cout << "Please enter a number: ";
do {
std::getline(std::cin, s);
} while (!check_only_digits(s));
long long i = std::stoll(s);