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()
是以什么来判断的?
天蓬老师2017-04-17 13:31:48
請問
ss.fail()
是以什麼來判斷的?
根據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