考虑以下代码,它接受一个整数输入,然后打印cin流状态:
如果输入的数字是"zzzz",那么rdstate返回值为4。
如果输入的数字是"10zzzz",那么rdstate返回值为0,数字的值为10,输入流中包含"zzzz"。
我的问题是:
1. 为什么"10zzzz"这样的输入没有被视为无效输入(至少应该设置一个失败位)?
2. 如何优雅地检测和处理这种情况?
谢谢!
#include <iostream>
using namespace std;
int main()
{
int number;
cout<<"Enter a number \n";
cin>>number;
cout<<cin.rdstate()<<endl;
return 0;
}
如果输入的数字是"zzzz",那么rdstate返回值为4。
如果输入的数字是"10zzzz",那么rdstate返回值为0,数字的值为10,输入流中包含"zzzz"。
我的问题是:
1. 为什么"10zzzz"这样的输入没有被视为无效输入(至少应该设置一个失败位)?
2. 如何优雅地检测和处理这种情况?
谢谢!