這本書,現在我讀暗示在read()
函數返回istream&
爲了能夠寫出這樣的事情返回的IStream和對象來檢查,如果條件
if (read(cin, some_container)) {...}
然而,當我嘗試這個代碼我的功能無論如何總是返回假。哪裏有問題?
while (in >> c)
s.push_back(c);
}
該循環中斷時in
處於狀態,使得if (in)
將是錯誤的:
#include <iostream>
#include <vector>
using namespace std;
istream& read(istream& in, vector<double>& s)
{
if (in)
{
in.clear();
double c;
while (in >> c)
s.push_back(c);
}
return in;
}
int main()
{
vector<double> r;
if (read(cin, r))
cout << "success" << endl;
else
cout << "false returned" << endl;
return 0;
}
提示:您如何看待while循環結束? –
我找到了你,儘快將「in」結束爲0.但是,爲什麼它終止?即使我輸入一個隨機單詞而不是雙重單詞,我仍然掉在循環中,但問題是爲什麼? – trollpidor