有没有办法使用 XML boost::property_tree 读取无限的持续时间?

问题描述 投票:0回答:1

我正在尝试使用 boost::property_tree 从 XML 配置文件中读取某些配置的无限持续时间(对于其他配置则不是无限的)。此代码适用于非无限持续时间。

我的代码读取值:

boost::property_tree::ptree property_tree;
boost::property_tree::read_xml(filepath, property_tree);
auto config = property_tree.get_child("Config");
std::chrono::seconds my_duration_value = std::chrono::seconds(config.get<unsigned int>("MyDurationField"));

我希望能够在配置文件中执行以下操作:

  <Config>
     <MyDurationField>inf</MyDurationField>
  </Config>

有没有一种方法可以在无限和非无限的持续时间内做到这一点?预先感谢。

c++17 c++-chrono boost-propertytree
1个回答
0
投票

std::chrono::seconds
不会存储无限值。 所以这可能就是问题所在。 在底层,
seconds
只是一个带符号的 64 位整数类型。 您可以存储一个非常大的值(0x7FFF'FFFF'FFFF'FFFF 秒或大约 2920 亿年),但不是无穷大。

如果您将

chrono
表示更改为浮点类型(例如
double
),您可能能够实现它,但不确定。 这是
std::chrono::seconds
,但具有
double
的表示:

std::chrono::duration<double>
© www.soinside.com 2019 - 2024. All rights reserved.