提交 094a7d85 编写于 作者: C Christopher Dunn

Fix locale for decimal points

resolves #514
上级 b9afdf19
......@@ -1619,6 +1619,7 @@ bool OurReader::decodeDouble(Token& token, Value& decoded) {
Char buffer[bufferSize + 1];
memcpy(buffer, token.start_, ulength);
buffer[length] = 0;
fixNumericLocaleInput(buffer, buffer + length);
count = sscanf(buffer, format, &value);
} else {
JSONCPP_STRING buffer(token.start_, token.end_);
......
......@@ -5,6 +5,7 @@
#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED
#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED
#include <clocale>
/* This header provides common string manipulation support, such as UTF-8,
* portable conversion from/to string...
......@@ -82,6 +83,18 @@ static inline void fixNumericLocale(char* begin, char* end) {
}
}
static inline void fixNumericLocaleInput(char* begin, char* end) {
struct lconv* lc = localeconv();
if ((lc != NULL) && (*(lc->decimal_point) != '.')) {
while (begin < end) {
if (*begin == '.') {
*begin = *(lc->decimal_point);
}
++begin;
}
}
}
} // namespace Json {
#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册