将printf与boost::units::quantity值一起使用
Using printf with boost::units::quantity values
boost::units库提供了一种将数量值写入流的好方法,例如请参阅。
我可以将printf与数量值一起使用而不是使用输出流吗?我有相当多的代码使用printf很好地格式化了输出,我希望保留格式。将数量传递到
quantity<mass_density> rho = 1.0 * mass_density;
printf("rho %6.2en", rho);
抛出警告
警告:格式"%e"需要类型为"double"的参数,但需要参数2具有类型'增压::单位::数量<升压::单位::单位<提升::单位::列表<boost::单位::dim<提升::单位::length_base_dimension,boost::单位::static_limic<-0x00000000000000003l>>,提升::单位::列表<boost::单位::dim<提升::单位::mass_base_dimension,boost::单位::static_limic<1l>gt;,boost::units:dimensionless_type>gt;,提升::单位::均质系统<提升::单位::列表<boost::units::si::meter_base_unit,提升::单位::列表<boost::units:scaled_base_unit<boost::units:cgs:gram_base_unit,提升::单位::缩放<10l,boost::units::static_rive<3l>>gt;,提升::单位::列表<boost::units::si::second_base_unit,提升::单位::列表<升压::单位::si::ampe_base_unit,提升::单位::列表<boost::units::si::kelvin_base_unit,提升::单位::列表<boost::units::si::mole_base_unit,提升::单位::列表<boost::units::si::candela_base_unit,提升::单位::列表<提升::单位::角度::radian_base_unit,提升::单位::列表<升压::单位:角度:steradin_base_unit,boost::units:dimensionless_type>gt>gt>gt>>gt>gt>'[-Wformat]
我可以只使用rho.value(),但如果可能的话,我想输出单位(即使我更新了格式字符串)。
我想答案就在这里,http://www.boost.org/doc/libs/1_52_0/doc/html/boost_units/Reference.html#header.boost.units.io_hpp
格式说明符的列表由语言固定。"%e"
输出double
,"%d"
输出int
等。没有什么可以输出quantity<mass_density>
类型的对象或任何其他类类型的对象。
你可以有这个:
template <typename Unit, typename T>
string symbolic_units(const quantity<Unit, T> &)
{
return symbol_string(Unit());
}
int main()
{
quantity<mass_density> x;
x = 3.72 * kilogram_per_cubic_meter;
printf ("%g %sn", x.value(), symbolic_units(x).c_str());
}
但没有更多。当然,除非你愿意使用流。
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 如何将AERT_Allocate与 std:vector 一起使用
- 如何使我的 sizeof sum 结构与空参数包一起工作
- 将printf与boost::units::quantity值一起使用