要从cin
读取直到输入非数字的内容,可以使用C++的标准输入流操作和循环来实现。以下是一个详细的示例代码,展示了如何实现这一功能:
cin
对象有几种状态,如good()
, eof()
, fail()
, 和bad()
,可以用来检查输入是否成功。#include <iostream>
#include <limits>
int main() {
int number;
std::cout << "请输入一系列数字,以非数字字符结束输入:" << std::endl;
while (true) {
std::cin >> number;
if (std::cin.fail()) {
// 输入失败,可能是非数字字符
std::cin.clear(); // 清除错误状态
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略当前行的剩余内容
break; // 退出循环
}
// 处理数字输入
std::cout << "你输入的数字是: " << number << std::endl;
}
std::cout << "输入结束。" << std::endl;
return 0;
}
while (true)
创建一个无限循环,持续读取输入。std::cin >> number
尝试将输入解析为整数。如果输入不是数字,cin
会进入失败状态。std::cin.fail()
检查是否发生了错误。std::cin.clear()
清除错误状态,使cin
恢复正常。std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n')
忽略当前行的剩余内容,防止后续读取受到影响。break
退出循环。ignore
函数清除缓冲区。ignore
函数可以有效避免这种情况。通过上述方法,可以有效地从标准输入读取一系列数字,直到遇到非数字字符为止。
领取专属 10元无门槛券
手把手带您无忧上云