File tree Expand file tree Collapse file tree 1 file changed +16
-9
lines changed Expand file tree Collapse file tree 1 file changed +16
-9
lines changed Original file line number Diff line number Diff line change @@ -63,15 +63,22 @@ std::string valueToString(UInt value) {
63
63
#endif // # if defined(JSON_HAS_INT64)
64
64
65
65
std::string valueToString (double value) {
66
- // We need not request the alternative representation
67
- // that always has a decimal point because JSON doesn't distingish the
68
- // concepts of reals and integers.
69
- std::stringstream str;
70
- // Set locale to "C" to always get a '.' instead of a ','
71
- str.imbue (std::locale::classic ());
72
- str.precision (16 );
73
- str << value;
74
- return str.str ();
66
+ // Allocate a buffer that is more than large enough to store the 16 digits of
67
+ // precision requested below.
68
+ char buffer[32 ];
69
+
70
+ // Print into the buffer. We need not request the alternative representation
71
+ // that always has a decimal point because JSON doesn't distingish the
72
+ // concepts of reals and integers.
73
+ #if defined(_MSC_VER) && defined(__STDC_SECURE_LIB__) // Use secure version with
74
+ // visual studio 2005 to
75
+ // avoid warning.
76
+ sprintf_s (buffer, sizeof (buffer), " %.16g" , value);
77
+ #else
78
+ snprintf (buffer, sizeof (buffer), " %.16g" , value);
79
+ #endif
80
+
81
+ return buffer;
75
82
}
76
83
77
84
std::string valueToString (bool value) { return value ? " true" : " false" ; }
You can’t perform that action at this time.
0 commit comments