Boost logo

Boost Users :

From: Yuval Ronen (ronen_yuval_at_[hidden])
Date: 2005-01-19 01:53:18

> For 2, It seems more like a problem with stringstream - I think
> lexical_cast does:
> stringstream ss;
> ss << input;
> ss >> output;
> return output;

Not quite. In lexical_cast there's a code to specifically *not* ignore
leading whitespace - look for for the line
'stream.unsetf(std::ios::skipws)'. It also contains a code to
specifically *ignore* trailing whitespace (but not other characters) -
look for 'stream >> std::ws'. So this was done intentionally, even
though mistakenly in my opinion.

My version of 'lexical_cast<T, string>' looks like (I hope I remember

template <typename T>
T convert_from_string(const string &str)
     T val;
     istringstream iss(str);
     iss >> noskipws >> val;
     if ( || !iss.eof())
         throw ...;
     return val;

and it works fine. No problems with the stringstream.

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at