如何使用 boost 库读写(或修改).ini 文件?
问问题
17259 次
1 回答
6
您可以读取和Boost.PropertyTree
更新树,然后写入文件(请参阅load
和save
函数。
看看如何访问属性树中的数据。您绝对可以添加新属性或更新现有属性。它提到erase
容器上也有,因此您应该能够删除现有值。来自(上面的链接)的示例boost
:
ptree pt;
pt.put("a.path.to.float.value", 3.14f);
// Overwrites the value
pt.put("a.path.to.float.value", 2.72f);
// Adds a second node with the new value.
pt.add("a.path.to.float.value", 3.14f);
我假设您随后会将更新的树写入文件,无论是新文件还是覆盖现有文件。
编辑: 对于 ini 文件,它会进行特定的检查。
上面的例子如果你尝试使用 ini_parser 保存到 ini,你会得到:
- ptree 太深
- 重复键
在这里修复了一个编写ini文件的示例代码,我更新了现有键的值,然后添加了一个新键:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
void save(const std::string &filename)
{
using boost::property_tree::ptree;
// pt.put("a.path.to.float.value", 3.14f);
// pt.put("a.path.to.float.value", 2.72f);
// pt.add("a.path.to.float.value", 3.14f);
ptree pt;
pt.put("a.value", 3.14f);
// Overwrites the value
pt.put("a.value", 2.72f);
// Adds a second node with the new value.
pt.add("a.bvalue", 3.14f);
write_ini( filename, pt );
}
int main()
{
std::string f( "test.ini" );
save( f );
}
test.ini
文件:
[a]
value=2.72
bvalue=3.14
随意尝试。
于 2013-03-26T22:32:00.010 回答