📅  最后修改于: 2023-12-03 14:39:49.504000             🧑  作者: Mango
cin
只接受数字在C++中,cin
是一个输入流对象,用于从标准输入中获取用户输入。通常情况下,cin
可以接受任何类型的输入,但是如果你只想接收数字输入,可以通过几种方法来实现。
你可以通过循环验证输入并忽略非数字字符,直到接收到有效的数字输入。以下是一个示例代码片段:
#include <iostream>
#include <limits>
int main() {
double num;
std::cout << "请输入一个数字:";
while (!(std::cin >> num)) {
std::cin.clear(); // 清除错误状态位
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略无效输入
std::cout << "输入无效,请重新输入一个数字:";
}
std::cout << "输入的数字是:" << num << std::endl;
return 0;
}
在上面的代码中,我们使用std::cin >> num
来尝试读取一个浮点数。如果输入不是一个数字,则std::cin
的错误状态位会被设置,导致条件 !(std::cin >> num)
为真。在这种情况下,我们需要使用std::cin.clear()
清除错误状态位,并使用std::cin.ignore()
忽略之前的无效输入。
请注意,std::numeric_limits<std::streamsize>::max()
用于指定忽略字符的最大数量,'\n'
表示忽略直到换行符为止。
如果你需要接受整数输入,你可以将输入读取为字符串,然后使用其他方法(如std::stoi()
或std::istringstream
)将字符串转换为整数。以下是一个示例代码片段:
#include <iostream>
#include <string>
bool IsNumeric(const std::string& str) {
for (char c : str) {
if (!std::isdigit(c)) {
return false;
}
}
return true;
}
int main() {
std::string input;
int num;
std::cout << "请输入一个整数:";
while (true) {
std::cin >> input;
if (IsNumeric(input)) {
num = std::stoi(input);
break;
} else {
std::cout << "输入无效,请重新输入一个整数:";
}
}
std::cout << "输入的整数是:" << num << std::endl;
return 0;
}
上面的代码使用了std::stoi()
函数将字符串转换为整数。我们还定义了一个辅助函数IsNumeric()
来验证字符串是否只包含数字字符。
通过验证输入并忽略非数字字符,或者将输入读取为字符串并进行验证,你可以实现仅接受数字输入的逻辑。这可以确保你的程序在处理用户输入时具有更高的鲁棒性。
希望本文对您有所帮助!