|
Boost : |
From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-02-03 12:39:52
>From: "Vladimir Prus" <ghost_at_[hidden]>
> after having to output std::vector to stream again and again using custom
> solution, I started to wonder why we don't have a solution in boost.
> Does it makes sense to include operators<< for vectors, sets, etc?
>
> I was thinking about
>
> <boost/io/vector.hpp>
> <boost/io/set.hpp>
>
> and so on. There are basically two approaches:
>
> 1. Operators use fixed format: bracked list with commas between values for
> vector, for example.
> 2. Manipulators are provided to set brackets and separators.
>
> I had implemented the second approach some time ago, but it turned out
that
> was overkill. So, 1) looks better now.
>
> Thoughts?
You can do this quite well using the standard library and stream iterator
adapters. This may do both of your approaches above. For example:
--- Start ---
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
std::vector<std::string> list;
list.push_back("A");
list.push_back("B");
list.push_back("C");
typedef std::ostream_iterator<std::string> Out;
std::cout << "Print vector\n";
std::copy(list.begin(),list.end(),Out(std::cout,"\n"));
}
--- End ---
Output:
Print vector
A
B
C
Regards,
Terje
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk