|
Boost : |
From: Martin (adrianm_at_[hidden])
Date: 2004-09-17 02:22:08
I have tried to use lexical_cast many times but I always run into problems
sooner or later due to the lack of locale support.
Why not add a locale overload (or default argument) to lexical_cast.
std::string x = lexical_cast<std::string>(1234); // "1 234" on my PC
std::string y = lexical_cast<std::string>(1234, std::locale::classic
()); // "1234" on my PC
double xmlDbl1 = lexcal_cast<double>("1.23"); // bad_cast on my PC
double xmlDbl2 = lexcal_cast<double>("1.23", std::locale::classic());
The change would be minimal
lexical_stream() {
becomes
lexical_stream(const std::locale& loc) { stream.imbue(loc);
and
template<typename Target, typename Source>
Target lexical_cast(Source arg) {
detail::lexical_stream<Target, Source> interpreter;
becomes
template<typename Target, typename Source>
Target lexical_cast(Source arg, const std::locale& loc = std::locale()) {
detail::lexical_stream<Target, Source> interpreter(loc);
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk