准备使用C ++ iomanip包装器?

时间:2015-02-09 20:41:46

标签: c++ iostream iomanip

由于iomanip流修饰符的原始使用是a)详细且b)容易出错(sticky vs. non-sticky等),对于用户定义的类型,所有这些内容都可以隐藏在默认值{ {1}} ...作为shown here, for example

但是,在格式化内置类型时(即使是在用户定义的运算符中),使用类似std::quoted 的方法会更方便(恕我直言)(注意C ++ 14 ),其中数据包装在一个函数调用中,该函数调用返回一个临时对象,该对象设置+重置相应的标志。

基本上,而不是writing

operator<<

你会假设写道:

std::cout << std::setprecision(2) << std::fixed << 1.23456 << "\n";

如示例所示,标志的组合可能会变得棘手,我确信魔鬼在细节中,所以我想知道是否有任何先前的艺术/退出帮助库试图解决“雪佛龙地狱”。 : - )

  • 是否存在解决此问题的现有库?
  • 如果想要自己想出一套帮手,这里有哪些技术缺陷?

具体来说,这个问题不是关于任何类型的“类型安全格式字符串”(如Boost.Format提供的)。

我也不是要求一个“最好的”库,我要求任何库为正常的ostream做这个。 (因为我找不到任何东西。)

例如,write API of C++ Format执行类似这样的操作,但它不适用于std :: iostreams,但是对于库的“stream”类型:

using namespace shorter;
std::cout << precis(2, fixed(1.234556)) << "\n";

0 个答案:

没有答案