C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.
41 lines
796 B
41 lines
796 B
/** @file |
|
|
|
$Id$ |
|
|
|
$Date$ |
|
$Author$ |
|
|
|
@copy © Marc Wäckerlin |
|
@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 |
|
|
|
|
|
*/ |
|
|
|
#include <stdext.hpp> |
|
|
|
std::string mrw::getline(std::istream& is, char d) { |
|
std::string s; |
|
mrw::getline(is, s, d); |
|
return s; |
|
} |
|
|
|
std::istream& mrw::getline(std::istream& is, std::string& s, char d) { |
|
char buf[255]; |
|
char c; |
|
s.clear(); |
|
do { |
|
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); |
|
return is; |
|
}
|
|
|