的問題是,你不能重複使用相同的stringstream對象,嘗試做這樣的代替:
std::string version = curl_version();
version = version.substr(version.find('/') + 1);
int min, max;
int pos = version.find('.');
std::stringstream stream(version.substr(0, pos));
version = version.substr(pos + 1);
stream >> max;
pos = version.find('.');
std::stringstream stream1(version.substr(0, pos));
stream1 >> min;
看來,當你轉移(>>)了字符串流的,它到達eof(可以通過調用stream.eof()來檢查)設置了一個標誌,即使您設置了(通過調用str())一個新的關聯字符串對象,也可以防止進一步移出。 要使其工作,必須在再次移出之前調用clear()。
std::string version = curl_version();
version = version.substr(version.find('/') + 1);
int min, max;
int pos = version.find('.');
std::stringstream stream(version.substr(0, pos));
version = version.substr(pos + 1);
stream >> max;
pos = version.find('.');
stream.str(version.substr(0, pos));
str.clear();
stream >> min;
您是否驗證過您挑出的子字符串其實是正確的,即實際的數字? –
@MattPhillips,是的。 curl_version()給出「libcurl/7.26.0」。首先,我切斷了「libcurl /」。然後,「max」得到「7」,但是min不會得到26. – Igor
好吧,爲了清楚起見,'version.substr(0,pos)'的最後一個實例的計算結果爲「26」? –