Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
4151f2d2
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,发现更多精彩内容 >>
未验证
提交
4151f2d2
编写于
2月 19, 2017
作者:
N
Niels Lohmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✅
added test with thousands_sep
上级
5b53f03e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
20 addition
and
48 deletion
+20
-48
src/json.hpp
src/json.hpp
+1
-20
src/json.hpp.re2c
src/json.hpp.re2c
+1
-20
test/src/unit-regression.cpp
test/src/unit-regression.cpp
+18
-8
未找到文件。
src/json.hpp
浏览文件 @
4151f2d2
...
...
@@ -8298,25 +8298,7 @@ class basic_json
snprintf
(
m_buf
.
data
(),
m_buf
.
size
(),
fmt
,
x
);
#if 0
// C locales and C++ locales are similar but
// different.
//
// If working with C++ streams we'd've used
// these, but for C formatting functions we
// have to use C locales (setlocale / localeconv),
// rather than C++ locales (std::locale installed
// by std::locale::global()).
const std::locale loc;
const char thousands_sep =
std::use_facet< std::numpunct<char>>(
loc).thousands_sep();
const char decimal_point =
std::use_facet< std::numpunct<char>>(
loc).decimal_point();
#else
// read information from locale
const
auto
loc
=
localeconv
();
assert
(
loc
!=
nullptr
);
const
char
thousands_sep
=
!
loc
->
thousands_sep
?
'\0'
...
...
@@ -8324,7 +8306,6 @@ class basic_json
const
char
decimal_point
=
!
loc
->
decimal_point
?
'\0'
:
loc
->
decimal_point
[
0
];
#endif
// erase thousands separator
if
(
thousands_sep
!=
'\0'
)
...
...
src/json.hpp.re2c
浏览文件 @
4151f2d2
...
...
@@ -8298,25 +8298,7 @@ class basic_json
snprintf(m_buf.data(), m_buf.size(), fmt, x);
#if 0
// C locales and C++ locales are similar but
// different.
//
// If working with C++ streams we'd've used
// these, but for C formatting functions we
// have to use C locales (setlocale / localeconv),
// rather than C++ locales (std::locale installed
// by std::locale::global()).
const std::locale loc;
const char thousands_sep =
std::use_facet< std::numpunct<char>>(
loc).thousands_sep();
const char decimal_point =
std::use_facet< std::numpunct<char>>(
loc).decimal_point();
#else
// read information from locale
const auto loc = localeconv();
assert(loc != nullptr);
const char thousands_sep = !loc->thousands_sep ? '\0'
...
...
@@ -8324,7 +8306,6 @@ class basic_json
const char decimal_point = !loc->decimal_point ? '\0'
: loc->decimal_point[0];
#endif
// erase thousands separator
if (thousands_sep != '\0')
...
...
test/src/unit-regression.cpp
浏览文件 @
4151f2d2
...
...
@@ -361,8 +361,8 @@ TEST_CASE("regression tests")
SECTION
(
"issue #228 - double values are serialized with commas as decimal points"
)
{
json
j1a
=
23.42
;
json
j1b
=
json
::
parse
(
"23.42"
);
json
j1a
=
23
12
.42
;
json
j1b
=
json
::
parse
(
"23
12
.42"
);
json
j2a
=
2342e-2
;
//issue #230
...
...
@@ -380,23 +380,33 @@ TEST_CASE("regression tests")
{
return
','
;
}
char
do_thousands_sep
()
const
{
return
'.'
;
}
std
::
string
do_grouping
()
const
{
return
"
\03
"
;
}
};
// change locale to mess with decimal points
auto
orig_locale
=
std
::
locale
::
global
(
std
::
locale
(
std
::
locale
(),
new
CommaDecimalSeparator
));
CHECK
(
j1a
.
dump
()
==
"23.42"
);
CHECK
(
j1b
.
dump
()
==
"23.42"
);
CHECK
(
j1a
.
dump
()
==
"23
12
.42"
);
CHECK
(
j1b
.
dump
()
==
"23
12
.42"
);
// check if locale is properly reset
std
::
stringstream
ss
;
ss
.
imbue
(
std
::
locale
(
std
::
locale
(),
new
CommaDecimalSeparator
));
ss
<<
47.11
;
CHECK
(
ss
.
str
()
==
"4
7
,11"
);
ss
<<
47
12
.11
;
CHECK
(
ss
.
str
()
==
"4
.712
,11"
);
ss
<<
j1a
;
CHECK
(
ss
.
str
()
==
"4
7,1123
.42"
);
CHECK
(
ss
.
str
()
==
"4
.712,112312
.42"
);
ss
<<
47.11
;
CHECK
(
ss
.
str
()
==
"4
7,1123
.4247,11"
);
CHECK
(
ss
.
str
()
==
"4
.712,112312
.4247,11"
);
CHECK
(
j2a
.
dump
()
==
"23.42"
);
//issue #230
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录