Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
6a108bb8
J
json
项目概览
畅游知识海洋
/
json
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
json
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6a108bb8
编写于
6月 28, 2016
作者:
N
Niels
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'feature/issue272' into develop
上级
360f0f37
7214243d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
10 deletion
+28
-10
src/json.hpp
src/json.hpp
+9
-5
src/json.hpp.re2c
src/json.hpp.re2c
+9
-5
test/src/unit.cpp
test/src/unit.cpp
+10
-0
未找到文件。
src/json.hpp
浏览文件 @
6a108bb8
...
...
@@ -2097,6 +2097,8 @@ class basic_json
string_t
dump
(
const
int
indent
=
-
1
)
const
{
std
::
stringstream
ss
;
// fix locale problems
ss
.
imbue
(
std
::
locale
(
std
::
locale
(),
new
DecimalSeparator
));
if
(
indent
>=
0
)
{
...
...
@@ -5655,9 +5657,14 @@ class basic_json
// reset width to 0 for subsequent calls to this stream
o
.
width
(
0
);
// fix locale problems
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
;
}
...
...
@@ -6128,11 +6135,8 @@ class basic_json
// string->double->string or string->long
// double->string; to be safe, we read this value from
// std::numeric_limits<number_float_t>::digits10
std
::
stringstream
ss
;
ss
.
imbue
(
std
::
locale
(
std
::
locale
(),
new
DecimalSeparator
));
// fix locale problems
ss
<<
std
::
setprecision
(
std
::
numeric_limits
<
double
>::
digits10
)
<<
m_value
.
number_float
;
o
<<
ss
.
str
();
o
<<
std
::
setprecision
(
std
::
numeric_limits
<
double
>::
digits10
)
<<
m_value
.
number_float
;
}
return
;
}
...
...
src/json.hpp.re2c
浏览文件 @
6a108bb8
...
...
@@ -2097,6 +2097,8 @@ class basic_json
string_t dump(const int indent = -1) const
{
std::stringstream ss;
// fix locale problems
ss.imbue(std::locale(std::locale(), new DecimalSeparator));
if (indent >= 0)
{
...
...
@@ -5655,9 +5657,14 @@ class basic_json
// reset width to 0 for subsequent calls to this stream
o.width(0);
// fix locale problems
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;
}
...
...
@@ -6128,11 +6135,8 @@ class basic_json
// string->double->string or string->long
// double->string; to be safe, we read this value from
// std::numeric_limits<number_float_t>::digits10
std::stringstream ss;
ss.imbue(std::locale(std::locale(), new DecimalSeparator)); // fix locale problems
ss << std::setprecision(std::numeric_limits<double>::digits10)
<< m_value.number_float;
o << ss.str();
o << std::setprecision(std::numeric_limits<double>::digits10)
<< m_value.number_float;
}
return;
}
...
...
test/src/unit.cpp
浏览文件 @
6a108bb8
...
...
@@ -14079,6 +14079,16 @@ 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
()
==
"47,1123.42"
);
ss
<<
47.11
;
CHECK
(
ss
.
str
()
==
"47,1123.4247,11"
);
CHECK
(
j2a
.
dump
()
==
"23.42"
);
//issue #230
//CHECK(j2b.dump() == "23.42");
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录