84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
int i = 0; getline(cin, s); ss.clear(); ss.str(s); while(!ss.fail()) ss >> H[i++];
假如getline读入了1 2 3 4, 这段代码运行结束后, i的值为5. 这是为什么? 请问ss.fail()是以什么来判断的?
1 2 3 4
i
ss.fail()
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
请问ss.fail()是以什么来判断的?
根据ss对象的failbit和badbit的状态来判断的。
ss
failbit
badbit
i的值为 5,这是为什么?
因为读入最后一个数字 4 之后,ss仍处于正常状态,只有再尝试读入(即第5次循环)才会出错。你可以试试输入空行,i的值为 1。
常用实践为:
int i = 0; getline(cin, s); ss.clear(); ss.str(s); while(ss >> H[i++]) { }
参考
std::basic_ios::fail
std::basic_stringstream
根据
ss
对象的failbit
和badbit
的状态来判断的。因为读入最后一个数字 4 之后,
ss
仍处于正常状态,只有再尝试读入(即第5次循环)才会出错。你可以试试输入空行,i
的值为 1。常用实践为:
参考
std::basic_ios::fail
std::basic_stringstream