我写了下面的代码,它在有效输入的情况下有效
char input[100];
cin.getline(input, sizeof(input));
stringstream stream(input);
while (stream.rdbuf()->in_avail() != 0) {
int n;
stream >> n;
numbers.push_back(n);
}
但是当我输入一些东西而不是数字时失败了。 我怎么能处理错误的输入(例如任何字母)?
最佳答案
例如:
bool is_number(const std::string& s)
{
return !s.empty() && std::find_if(s.begin(),
s.end(), [](char c) { return !std::isdigit(c); }) == s.end();
}
foo() {
char input[100];
cin.getline(input, sizeof(input));
stringstream stream(input);
while (stream.rdbuf()->in_avail() != 0) {
std::string n;
stream >> n;
if(is_number(n)) {
numbers.push_back(std::stoi(n));
}
else {
std::cout << "Not valid input. Provide number" << std::endl;
}
}
}
int main()
{
foo();
return 0;
}
关于c++ - 在 C++ 中验证控制台输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37644554/