如何使用std :: cout执行以下操作?
double my_double = 42.0;
char str[12];
printf_s("%11.6lf", my_double); // Prints " 42.000000"
Run Code Online (Sandbox Code Playgroud)
我准备放弃并使用sprintf_s.
更一般地说,我在哪里可以找到std :: ostream格式的引用,它在一个地方列出所有内容,而不是在长篇教程中全部展开?
编辑2017年12月21日 - 请参阅下面的答案.它使用了我在2012年提出这个问题时无法使用的功能.
boost::json::serializer如文档中的示例所示使用- 快速查看以紧凑格式保存 json 树。
有没有办法指示serializer输出人类可读的文件(即带有换行符和空格)?我四处搜寻,但没有发现任何提示。
注意:更好的是以紧凑的格式编写树的较高级别,以及一些对象或数组(可能是标记的)。
缩短的示例代码可能如下所示:
#include <iostream>
#include <boost/json.hpp>
#include <boost/json/src.hpp> // use header-only
using namespace boost;
int main(int /*argc*/, char */*argv*/[]) {
json::value jv = {
{ "pi", 3.141 },
{"list", {1, 0, 2}},
};
json::serializer sr;
sr.reset( &jv );
do {
char buf[ 16 ];
std::cout << sr.read( buf );
} while( ! sr.done() );
}
Run Code Online (Sandbox Code Playgroud)
这(正确地)输出{"pi":3.141E0,"list":[1,0,2]},但我宁愿有:
{
"pi":3.141E0,
"list":
[
1,
0,
2
]
}
Run Code Online (Sandbox Code Playgroud)
或(“NB”版本):
{
"pi":3.141E0, …Run Code Online (Sandbox Code Playgroud)