我想使用 boost 库从 C++ 文件中读取 json 数据。使用属性树。我是编程新手,对 C++ 非常陌生,这是我第一次使用 boost 库。多年前,我在 C 中有一些历史。我在使用 SFML 库的 C++ 方面有一周的经验。
下面是我的模板代码加载文件,读取数据,如果失败给出错误。我想改变我的错误处理方式有点不同。1. 如果我无法打开提到的文件,因为它不存在,我想创建一个相应命名的空白文件。2. 但是,如果发生其他错误但文件存在,我不想意外删除文件并创建新文件(擦除数据)。
我想它会是这样的
catch (const std::exception& e)
{
if (e.type == std::exception::filenotfound()) //whatever function i need
{
boost::property_tree::write_json("./data.json", pt);
}
else
{
std::cout << e.what() << std::endl;
}
}
因此,我只想在文件真正不存在的情况下创建该文件,但如果我要查找的数据以某种方式损坏、丢失或发生一些无法想象的其他错误,我不想删除它。这是我的模板(没有实现我想要的)
#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
int main()
{
boost::property_tree::ptree pt;
try
{
boost::property_tree::read_json("./data.json", pt);
}
catch (const std::exception& e)
{
std::cout << e.what() << std::endl;
}
std::cout << pt.get<std::string>("test_name","default") << std::endl;
return 0;
}
我应该如何编写这段代码。我在互联网上搜索了 2 个小时,但找不到任何我想要的东西。(或者至少我没有注意到)而且我没有足够的经验来解码原始库文档。它们对我来说就像是加密的,所以我寻找样本。