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()
是以什么来判断的?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
根据
ss
对象的failbit
和badbit
的状态来判断的。因为读入最后一个数字 4 之后,
ss
仍处于正常状态,只有再尝试读入(即第5次循环)才会出错。你可以试试输入空行,i
的值为 1。常用实践为:
参考
std::basic_ios::fail
std::basic_stringstream