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>
|
@license LGPL, see file <a href="license.html">COPYING</a>
|
||||||
|
|
||||||
$Log$
|
$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
|
Revision 1.1 2004/10/11 18:30:16 marc
|
||||||
*** empty log message ***
|
*** empty log message ***
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace mrw {
|
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) {
|
template<typename T> const T& min(const T& a, const T& b) {
|
||||||
return a > b ? b : a;
|
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) {
|
template<typename T> const T& max(const T& a, const T& b) {
|
||||||
return a < b ? b : a;
|
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