diff --git a/mrw/stdext.cpp b/mrw/stdext.cpp
index 2936dd9..65775ed 100644
--- a/mrw/stdext.cpp
+++ b/mrw/stdext.cpp
@@ -9,6 +9,9 @@
@license LGPL, see file COPYING
$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
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);