当你将字母cin>>到整型变量时会发生什么?我试着用简单的代码将两个整数相加,先读取它们,然后再相加。但当我输入字母时,它就会失败,并在屏幕上打印成吨的数字。但是是什么导致了这个错误呢?我是说,我希望它能加载并使用那封信的ASCII码。
发布于 2010-03-09 17:45:15
我假设你有这样的代码:
int n;
while (someCondition) {
std::cin >> n;
.....
std::cout << someOutput;
}
当您输入一些无法作为整数读取的内容时,流(std::cin)将进入失败状态,并且只要您不处理输入错误,所有后续的输入尝试都会失败。
您可以测试输入操作是否成功:
if (!(std::cin >> n)) //failed to read int
您可以将流恢复到良好状态,并丢弃未处理的字符(导致输入失败的输入):
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
另一种可能是接受字符串变量的输入(很少失败),并尝试将字符串转换为int。
这是输入的一个非常常见的问题,在这里和其他地方都应该有大量的线程。
发布于 2010-03-09 17:12:31
如果您显式地将char转换为int,它将使用ASCII代码,否则它不会自动转换为int,因此您将得到奇怪的结果。
发布于 2010-03-09 17:18:56
您可以使用int istream::get();
https://stackoverflow.com/questions/2407771
复制相似问题