相关疑难解决方法(0)

std :: ostream的浮点格式

如何使用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年提出这个问题时无法使用的功能.

c++ floating-point cout ostream

38
推荐指数
5
解决办法
6万
查看次数

有没有办法将 boost::json::serializer 切换为美化输出?

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)

c++ json boost

8
推荐指数
1
解决办法
1906
查看次数

标签 统计

c++ ×2

boost ×1

cout ×1

floating-point ×1

json ×1

ostream ×1