getline reads a whole line from a stream

master
Marc Wäckerlin 20 years ago
parent e929ed1dc4
commit 38f6f02c76
  1. 44
      mrw/stdext.cpp
  2. 52
      mrw/stdext.hpp

@ -0,0 +1,44 @@
/** @file
$Id$
$Date$
$Author$
@copy © Marc Wäckerlin
@license LGPL, see file <a href="license.html">COPYING</a>
$Log$
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) {
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);
return s;
}
std::istream& mrw::getline(std::istream& is, std::string& s, char d) {
char buf[255];
char c;
s.clear();
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);
return is;
}

@ -9,20 +9,72 @@
@license LGPL, see file <a href="license.html">COPYING</a>
$Log$
Revision 1.2 2004/10/13 11:18:33 marc
getline reads a whole line from a stream
Revision 1.1 2004/10/11 18:30:16 marc
*** empty log message ***
*/
#include <string>
#include <iostream>
namespace mrw {
/** @brief get the lower of two values
Get the lower of two values.
If both values are equal, @c a is returned.
@param a first value to compare
@param b second value to compare
@return the lower of both values
@pre #include <mrw/stdext.hpp>
@pre @c T must support <code>bool operator>(conbst T&, constT&)</code>
*/
template<typename T> const T& min(const T& a, const T& b) {
return a > b ? b : a;
}
/** @brief get the higher of two values
Get the higher of two values.
If both values are equal, @c a is returned.
@param a first value to compare
@param b second value to compare
@return the higher of both values
@pre #include <mrw/stdext.hpp>
@pre @c T must support <code>bool operator<(conbst T&, constT&)</code>
*/
template<typename T> const T& max(const T& a, const T& b) {
return a < b ? b : a;
}
/** @brief read one line from a stream
Reads one line from a stream, up to delimiter @c d.
@param is the stream to read from
@param d the end of line delimiter
@return the line read from the stream
@pre #include <mrw/stdext.hpp>
*/
std::string getline(std::istream& is, char d = '\n');
/** @brief read one line from a stream
Reads one line from a stream, up to delimiter @c d.
@param is the stream to read from
@param s the string to place the line in
@param d the end of line delimiter
@return @c s: the line read from the stream
@return the stream after extraction of line
@pre #include <mrw/stdext.hpp>
*/
std::istream& getline(std::istream& is, std::string& s, char d = '\n');
}

Loading…
Cancel
Save