|
Boost : |
From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-04-18 15:32:38
>From: "Vladimir Prus" <ghost_at_[hidden]>
>Subject: [boost] lexical_cast problem
Not again. :)
> I've just updated my project to use boost 1.30 and also gcc 3.2 and see
> exception which reads:
>
> bad lexical cast: source type value could not be interpreted as target,
> Target=i, Source=Ss
Ah, yes, good ol' g++ with its wonderfully descriptive type_info names... ;)
> The simple reproduction recipe is:
>
> #include <boost/lexical_cast.hpp>
> #include <string>
>
> int main()
> {
> boost::lexical_cast<int>(std::string(" 0"));
> }
"Houston, we have a problem..."
Hm, just now, I sent a reply to a similar problem report at Boost-Users
list, about why whitespace skipping is turned off in the new lexical_cast
version. It was to avoid having things like "lexical_cast<std::string>(' ');
// Space character" work, which used to throw an exception.
However, it seems this change has had undesired side-effects, in that code
like the above now fails to work.
Frankly, I don't know what to do with this...
> Note the space in string. The exception does not occur with gcc 2.95, but
only
> with 3.2. I wonder if this should/can be fixed? Personally, I'd expect
this
> code to work.
>
> And a related note: the exception's what() above is not quite helpfull.
The current version in the CVS has got a changed exception handling, where
bad_lexical_cast now looks like this:
class bad_lexical_cast : public std::bad_cast
{
public:
// ...
const std::type_info &source_type() const
const std::type_info &target_type() const
virtual const char *what() const throw()
{
return "bad lexical cast: "
"source type value could not be interpreted as target";
}
};
In other words, what() now returns the original text, and the type_info
objects for the types used is now returned by member functions.
> Is it
> possible to output the stringstream content (if source -> stringstream
> conversion was successfull?)
Yes, that's possible. I guess I'll leave it to Kevlin to comment on this.
Thanks for the report, to both you and Tom Matelich at Boost-Users list.
Regards,
Terje
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk