验证 C++ 中的控制台输入
Validate console input in c++
我写了下面的代码,在有效输入的情况下工作
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
- 验证 C++ 中的控制台输入
- 如何将文件输入到C++并比较控制台输入
- 如何获取类似 QIODevice 的控制台输入信号 (stdin)
- C++中的GTK:基于控制台输入更改标签
- 如何在C++中调用具有参数和用户控制台输入的函数
- 用C++读取一个很长的控制台输入
- Seg 错误初始化列表向量与控制台输入
- C++控制台应用呈现其他 CMD 窗口不接受控制台输入
- 异步控制台输入冻结了以前的输入 C
- 控制台输入,直到.然后输入
- C++阻止5个字符后的控制台输入
- 在代码中定义字符串与控制台输入之间的区别
- 如何将控制台输入写入等待ReadConsoleInput的子应用程序
- 在代码块中,您在哪里键入控制台输入
- 将文件中的数字与控制台输入进行比较