84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
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