diff --git a/alib2std/src/extensions/istream.cpp b/alib2std/src/extensions/istream.cpp index 80e2536a9ed1fc770755c4fd9972cb5efead37fe..0d96eeae88e3e4bc0147ea99da971096a12bd8c6 100644 --- a/alib2std/src/extensions/istream.cpp +++ b/alib2std/src/extensions/istream.cpp @@ -7,28 +7,31 @@ #include "../istream" -std::istream& oprr(std::istream& in, const std::string& str, bool start) { - if(str.size() == 0) return in; - char c_str = str[0]; - char c_in = in.peek(); - in.get(); - if(in.good()) { - if(start && (c_in == ' ' || c_in == '\n' || c_in == '\t')) { - oprr(in, str, start); - } else if(c_str == c_in) { - oprr(in, str.substr(1), false); - } else { - in.clear(std::ios::failbit); - } - } - if(in.fail()) { - in.clear(); - in.putback(c_in); - in.clear(std::ios::failbit); - } - return in; +std::istream & oprr ( std::istream & in, const std::string & str, bool start ) { + if ( str.size ( ) == 0 ) return in; + + char c_str = str[0]; + char c_in = in.peek ( ); + in.get ( ); + + if ( in.good ( ) ) { + if ( start && ( ( c_in == ' ' ) || ( c_in == '\n' ) || ( c_in == '\t' ) ) ) + oprr ( in, str, start ); + else if ( c_str == c_in ) + oprr ( in, str.substr ( 1 ), false ); + else + in.clear ( std::ios::failbit ); + } + + if ( in.fail ( ) ) { + in.clear ( ); + in.putback ( c_in ); + in.clear ( std::ios::failbit ); + } + + return in; } -std::istream& operator>>(std::istream& in, const std::string& str) { - return oprr(in, str, true); +std::istream & operator >>( std::istream & in, const std::string & str ) { + return oprr ( in, str, true ); }