Boost logo

Boost :

From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-02-03 14:13:05

>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
> was overkill. So, 1) looks better now.

If this is done as a library, then I think it's best not to have hard-coded
brackets and separators. One might use an xalloc() value for each type to
output. For example something like:

typedef std::pair<int,char> Map;
typedef std::vector<Map> MapList;

MapList list;

// Fill container

std::cout << boost::io_format<Map>(",", "[", "]") <<
boost::io_format<MapList>("","","\n") << list << '\n';

This might print:

[1, a]
[2, b]
[3, c]



Boost list run by bdawes at, gregod at, cpdaniel at, john at