9
Helper class for join() I/O manipulator.
11
This is a join I/O manipulator with arguments for @c join(). These has to be
13
template <class FwdIter> class joiner {
14
friend std::ostream& operator<<(std::ostream& out, const joiner& j) {
20
explicit joiner(const std::string& separator, FwdIter start, FwdIter finish)
21
: m_sep(separator), m_start(start), m_finish(finish)
27
FwdIter m_start, m_finish;
29
void write(std::ostream& out) const {
30
if (m_start == m_finish)
45
Join manipulators for writing delimiter-separated strings to an
48
Use the manipulator as follows:
50
std::cout << ioutil::join(",", list.begin(), list.end()) << std::endl;
51
std::cout << ioutil::join(",", list) << std::endl;
54
template <class FwdIter>
56
join(const std::string& delim, FwdIter start, FwdIter finish) {
57
return joiner<FwdIter>(delim, start, finish);
61
template <class Container>
62
joiner<typename Container::const_iterator>
63
join(const std::string& delim, Container seq) {
64
typedef typename Container::const_iterator FwdIter;
65
return joiner<FwdIter>(delim, seq.begin(), seq.end());