getline reads a whole line from a stream
This commit is contained in:
44
mrw/stdext.cpp
Normal file
44
mrw/stdext.cpp
Normal file
@@ -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');
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user