- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
遍历空的 Boost.PropertyTree 的子节点通常是空操作:
ptree empty;
for (auto const& elements : empty)
{
std::cout << "child\n"; // Executed 0 times, as expected
}
但有时它会因访问冲突而崩溃:
ptree empty;
for (auto const& elements : empty.get_child("non-existent", ptree{})))
{
std::cout << "child\n";
}
Access violation reading location 0xFFFFFFFFFFFFFFFF.
(Inside
basic_ptree<K, D, C>::begin() const
)
现在很明显empty
没有 child “不存在”,但提供了默认值(ptree{}
)。我们从第一个示例中知道可以循环遍历一个空集合。
usual way to detect a read failure不起作用,因为这是 Boost.PropertyTree 中的访问冲突/未定义行为。
如何区分第一种和第二种类型的空属性树,从而避免迭代爆炸的类型?
最佳答案
问题是 Boost.PropertyTree 通过 const 引用采用默认值(临时)。和临时dies immediately ,甚至在调用 begin
之前。
您无法在运行时检测到此问题。解决方法是使用一个非临时的空 ptree
作为默认值。这可以是 const ptree
,因此您可以在不同的调用之间共享它。另一种解决方案是使用 this trick .
关于c++ - Boost.PropertyTree 在遍历一些空树时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907208/
遍历空的 Boost.PropertyTree 的子节点通常是空操作: ptree empty; for (auto const& elements : empty) { std::cout
假设我有这种 XML 格式: dostuff(); 如何使用 Boost.PropertyTree 读取属性? 最佳答案 如果xml有这样的内容: mode xxx 使
我有一些 boost::property_tree::ptree .我需要删除一些具有特定标签名称的元素的树。例如,源的 xml ptree是以下内容: 10 v
Boost 有 tutorial on how to load XML from a file .如何使用我在代码中创建或从用户接收的字符串(例如使用 cin)提供它? 最佳答案 这里有一些适合我的代
我正在使用 boots 的 property_tree 库。我正在寻找一种从 ptree 获取子节点的方法对象,但返回一个空 ptree如果失败。我在 property_tree/examples/e
所以有这样的 json: { "config": { "name": "myconfig", "servecies": { "module": [ "f
文档并没有真正说明。 我知道我可以将它交给它一个 ifstream,这样我就可以检查以确保它是打开的,所以这种情况大部分都得到了处理。 但是当执行 boost::property_tree::ini_
我正在尝试编写一个 XML 解析器,将 XML 文件解析为 boost::property_tree 并遇到了这个问题。如何(快速)检查某个属性的子对象是否存在? 显然我可以使用 BOOST_FORE
我有下面显示的 JSON 文件。 { "instruments": [ { "minShift": -1.0, // opcjonalnie - jeśli brak,
有填充boost::property_tree::ptree的例子 boost::property_tree::ptree pt; pt.put("one", "value1"); pt.put("o
如果能够将路径指定到包含数组的 Boost.PropertyTree 中,那就太好了。 我可以从这个 JSON 构造一个 Boost.PropertyTree: const char* theJSON
我一直在寻找在 C++ 中存储程序设置或选项或配置的解决方案。这些可能是在 GUI 中公开的设置,需要在我的代码运行之间保存。 在我的搜索中,我遇到了 boost.PropertyTree这似乎是一个
我想在 C++ 中序列化分层数据结构。我正在处理的项目使用 boost,所以我使用 boost::property_tree::ptree 作为我的数据节点结构。 我们有像 Person 这样的高级结
我是一名优秀的程序员,十分优秀!