|
|
|
@ -9,6 +9,9 @@ |
|
|
|
|
@license LGPL, see file <a href="license.html">COPYING</a> |
|
|
|
|
|
|
|
|
|
$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 |
|
|
|
|
getline reads a whole line from a stream |
|
|
|
|
|
|
|
|
@ -18,15 +21,8 @@ |
|
|
|
|
#include <stdext.hpp> |
|
|
|
|
|
|
|
|
|
std::string mrw::getline(std::istream& is, char d) { |
|
|
|
|
char buf[255]; |
|
|
|
|
char c; |
|
|
|
|
std::string s; |
|
|
|
|
do { |
|
|
|
|
if (is && is.get(buf, 255, d)) { |
|
|
|
|
s += buf; |
|
|
|
|
if (is.get(c) && c!=d) s+=c; |
|
|
|
|
} |
|
|
|
|
} while (is.good() && !is.eof() && c!=d); |
|
|
|
|
mrw::getline(is, s, d); |
|
|
|
|
return s; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -35,8 +31,9 @@ std::istream& mrw::getline(std::istream& is, std::string& s, char d) { |
|
|
|
|
char c; |
|
|
|
|
s.clear(); |
|
|
|
|
do { |
|
|
|
|
if (is && is.get(buf, 255, d)) { |
|
|
|
|
s += buf; |
|
|
|
|
if (is) { |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
} while (is.good() && !is.eof() && c!=d); |
|
|
|
|