Boost logo

Boost Users :

Subject: Re: [Boost-users] Why is boost::format::operator% not declared const?
From: Krzysztof Czainski (1czajnik_at_[hidden])
Date: 2013-01-16 03:25:26


2013/1/16 Chris Stankevitz <chrisstankevitz_at_[hidden]>

> On Tue, Jan 15, 2013 at 5:49 PM, Steve Lorimer <steve.lorimer_at_[hidden]>
> wrote:
> > Think about what happens if you feed multiple elements via operator% and
> > then call .str() - you get a std::string back - it has to store
> everything
> > you've fed in internally so that you can access the formatted string
> later
> > via .str()
>
> Steve,
>
> Thank you. I never used boost::format::str, but I agree that its
> presence indicates that operator% must alter an internal state.
>
> Question 1: Is there an efficient way to do the following (and by
> "more efficient" I mean fewer format constructors and string parsing):
>
> void WriteLog(float x, float y, float z, const Employee& e)
> {
> std::cout
> << "Values: "
> << boost::format("%0.3") % x
> << e
> << boost::format("%0.3") % y
> << boost::format("%0.3") % z;
> }
>

Hi,
I'm no expert here, but I'd try this:

boost::format const fmt("%0.3" );
cout << boost::format(fmt) % x << e << boost::format(fmt) %y ...

HTH,
Kris



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net