如何使用boost库读写(或修改).ini文件?
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文件中,你会得到以下错误:
修复后,这里是一个写入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
随意尝试。
write_ini
函数时添加前缀 boost::property_tree::
- 我花了20分钟才弄明白这个问题。我本可以自己做,但像这样的编辑通常会被拒绝。 - Philipp Ludwig
boost
函数? - Thomas Matthews<boost/property_tree/ini_parser.hpp>
修改值。 - Jesse Good