问题是您不能重用相同的 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;