Мне кажется, это самое простое решение, хотя работает и поток строк.
См .: http://www.sgi.com/tech/stl/find.html
std::string::const_iterator nl = std::find( foo.begin(), foo.end(), '\n' ) ;
std::string line1( foo.begin(), nl ) ;
if ( nl != foo.end() ) ++nl ;
std::string line2( nl, foo.end() ) ;
Тогда просто обрежьте линии:
std::string trim( std::string const & str ) {
size_t start = str.find_first_of( " " ) ;
if ( start == std::string::npos ) start = 0 ;
size_t end = str.find_last_of( " " ) ;
if ( end == std::string::npos ) end = str.size() ;
return std::string( str.begin()+start, str.begin()+end ) ;
}