From: John Maddock (john_at_[hidden])
Date: 2005-04-23 04:43:17
> OTOH, since the first release I've felt the weakest elements of the
> have been the handling of local times and i/o. It took a long time for me
> see 'the light' on i/o. The first implementations of streaming facets
> just too clunky and were too hard for users to use and extend. And the
> line is that every project/person/standard has their own format for
> i/o -- it's impossible to standardize what users want here. Luckily last
> summer Martin Andrian showed me the light with a partial implementation of
> 'format string' based i/o facet (basically you can write:
> date_facet->format("%Y-%b-%d") to reset the format of a date in a stream).
> This approach solved a long standing issue on my standardization todo
> list -->
> how does i/o fit in with the existing format string concepts in the
> lib. Not to mention that it is almost infinately flexible in terms of how
> various types can be streamed. This code will be the standard i/o facet
> the 1.33 release.
Jeff, do you mind if I throw a wildcard in here?
Why not drop facets altogether and use a stream format manipulator instead:
std::cout << set_date_format("%Y-%b-%d") << mydate << std::endl;
The format would be stored in the iostreams iword/pword (that's what they're
You could still have a facet if you really wanted uses to change the
*algorithm* used for io, but I guess what I'm trying to say is that:
algorithms go in facets.
configuration data goes in the iostream object itself.
Just my 2c worth,
Hope this doesn't cloud things up to much!