当调用 cin>>(int) 和 cin>>(string) 时,如果第一个输入不是整数,则似乎即使第二个输入是正确的字符串,cin>>(string) 仍然无法检索到第二个输入。
源代码很简单:
源代码很简单:
cout<<"Please enter count and name"<<endl;;
int count;
cin>>count; // >> reads an integer into count
string name;
cin>>name; // >> reades a string into name
cout<<"count: "<<count<<endl;
cout<<"name: "<<name<<endl;
测试用例如下:
案例1:输入无法转换为整数的字符和字符
请输入数量和名称
ad st
数量:0
名称:
案例2:输入数字和字符
请输入数量和名称
30 ad
数量:30
名称:ad
案例3:输入数字和可视作字符串的数字
请输入数量和名称
20 33
数量:20
名称:33
std::cin
有一个状态,您可以通过std::cin.good()
进行检查。输入可能会失败,而且通常会失败,因此您需要采取一些措施来解决它。 - 463035818_is_not_a_numbercin
处于无效状态,则任何进一步操作都是无意义的。2) "还是说在每次使用cin之前,需要检查或清除cin的状态?" 是的,一个人需要养成检查操作是否成功的习惯,而不是假设它们已经成功的习惯。3) "我从未在代码中看到过对cin状态的预处理"if (cin>>count) {/* 操作成功 */}
- Algirdas Preidžius