| Jon Stewart on 15 Aug 2003 17:48:21 -0000 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: [ALACPP] container streaming, sigh |
> Hm, I was hoping to somehow bind directly to operator<< (though it won't have
> the endl I want).
Dude, boost::lambda to the rescue:
#include <boost/lambda...> // look it up
ostream& operator<<(ostream& str, const vector<string>& rhs)
{
for_each(rhs.begin(), rhs.end(), str << _1 << ends);
return str;
}
It's the canonical boost::lambda example.
OR... if, GOD KNOWS WHY, boost::lambda doesn't work out for you...
ostream& operator<<(ostream& str, const vector<string>& rhs)
{
std::copy(ostream_iterator<string>(str),
ostream_iterator<string>(),
back_inserter(rhs));
return str;
}
The above isn't tested and is basically going off memory. YMMV.
I think there's an option to the ostream_iterator constructor for a
delimiter so you could have it print out the newline.
Note that when in a loop like this, you probably want std::ends not
std::endl. std::endl performs a flush. That should be a little gotcha' in
a book somewhere.
Jon
--
Jon Stewart Advanced Los Angeles C++
stew1@xxxxxxxxxxx http://www.alacpp.org
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp