Boost logo

Boost :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2003-04-21 04:07:50

As already noted, new lexical_cast disables whitespace skipping, which breaks
cases like

  lexical_cast<int>(" 1");

I've just found a more serious consequence:

    class Estimation_context {
          Estimation_context() {}

         int resource_count;
         int eta_ir1;
         int bline1;

        friend std::istream& operator>>(std::istream&, Estimation_context&);

   istream& operator>>(istream& is, Estimation_context& c)
       is >> c.resource_count >> c.eta_ir1 >> c.bline1;
       return is;

More complex version of this code used to work, but now

     lexical_cast<Estimation_context>("50 0 1 ");

throws exception, because embedded spaces are not skipped. If I write

    is >> c.resource_count >> ws >> c.eta_ir1 >> ws >> c.bline1;

everything works, but is this a good solution? I think not skipping whitespace
in operator>> is idiomatic usage and I would not like adding those "ws" to
all operators>> just for lexical_cast sake.

- Volodya

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