Boost logo

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