bugfix, now it works for empty lines
This commit is contained in:
		@@ -9,6 +9,9 @@
 | 
				
			|||||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
					    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $Log$
 | 
					    $Log$
 | 
				
			||||||
 | 
					    Revision 1.2  2004/12/14 20:21:21  marc
 | 
				
			||||||
 | 
					    bugfix, now it works for empty lines
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Revision 1.1  2004/10/13 11:18:33  marc
 | 
					    Revision 1.1  2004/10/13 11:18:33  marc
 | 
				
			||||||
    getline reads a whole line from a stream
 | 
					    getline reads a whole line from a stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -18,15 +21,8 @@
 | 
				
			|||||||
#include <stdext.hpp>
 | 
					#include <stdext.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::string mrw::getline(std::istream& is, char d) {
 | 
					std::string mrw::getline(std::istream& is, char d) {
 | 
				
			||||||
  char buf[255];
 | 
					 | 
				
			||||||
  char c;
 | 
					 | 
				
			||||||
  std::string s;
 | 
					  std::string s;
 | 
				
			||||||
  do {
 | 
					  mrw::getline(is, s, d);
 | 
				
			||||||
    if (is && is.get(buf, 255, d)) {
 | 
					 | 
				
			||||||
      s += buf;
 | 
					 | 
				
			||||||
      if (is.get(c) && c!=d) s+=c;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  } while (is.good() && !is.eof() && c!=d);
 | 
					 | 
				
			||||||
  return s;
 | 
					  return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -35,8 +31,9 @@ std::istream& mrw::getline(std::istream& is, std::string& s, char d) {
 | 
				
			|||||||
  char c;
 | 
					  char c;
 | 
				
			||||||
  s.clear();
 | 
					  s.clear();
 | 
				
			||||||
  do {
 | 
					  do {
 | 
				
			||||||
    if (is && is.get(buf, 255, d)) {
 | 
					    if (is) {
 | 
				
			||||||
      s += buf;
 | 
					      if (is.get(buf, 255, d)) s += buf;
 | 
				
			||||||
 | 
					      is.clear(); // is.get fails if line is empty
 | 
				
			||||||
      if (is.get(c) && c!=d) s+=c;
 | 
					      if (is.get(c) && c!=d) s+=c;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } while (is.good() && !is.eof() && c!=d);
 | 
					  } while (is.good() && !is.eof() && c!=d);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user