reset locale (for #272)
This commit is contained in:
parent
420659f187
commit
7214243d89
3 changed files with 15 additions and 3 deletions
|
@ -5658,10 +5658,13 @@ class basic_json
|
|||
// reset width to 0 for subsequent calls to this stream
|
||||
o.width(0);
|
||||
// fix locale problems
|
||||
o.imbue(std::locale(std::locale(), new DecimalSeparator));
|
||||
auto old_locale = o.imbue(std::locale(std::locale(), new DecimalSeparator));
|
||||
|
||||
// do the actual serialization
|
||||
j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
|
||||
|
||||
// reset locale
|
||||
o.imbue(old_locale);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
|
|
@ -5658,10 +5658,13 @@ class basic_json
|
|||
// reset width to 0 for subsequent calls to this stream
|
||||
o.width(0);
|
||||
// fix locale problems
|
||||
o.imbue(std::locale(std::locale(), new DecimalSeparator));
|
||||
auto old_locale = o.imbue(std::locale(std::locale(), new DecimalSeparator));
|
||||
|
||||
// do the actual serialization
|
||||
j.dump(o, pretty_print, static_cast<unsigned int>(indentation));
|
||||
|
||||
// reset locale
|
||||
o.imbue(old_locale);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
|
|
@ -14079,9 +14079,15 @@ TEST_CASE("regression tests")
|
|||
CHECK(j1a.dump() == "23.42");
|
||||
CHECK(j1b.dump() == "23.42");
|
||||
|
||||
// check if locale is properly reset
|
||||
std::stringstream ss;
|
||||
ss.imbue(std::locale(std::locale(), new CommaDecimalSeparator));
|
||||
ss << 47.11;
|
||||
CHECK(ss.str() == "47,11");
|
||||
ss << j1a;
|
||||
CHECK(ss.str() == "23.42");
|
||||
CHECK(ss.str() == "47,1123.42");
|
||||
ss << 47.11;
|
||||
CHECK(ss.str() == "47,1123.4247,11");
|
||||
|
||||
CHECK(j2a.dump() == "23.42");
|
||||
//issue #230
|
||||
|
|
Loading…
Reference in a new issue