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