Boost Ini-parser:在写入时保留 ini 文件中的注释

5 c++ boost

我正在尝试解析 Ini 文件(使用 boost)并将一些更改的值写回到文件中。以下代码 (main.cpp) 就是一个简单的示例:

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
#include <iostream>
#include <exception>

int main()
{
    try
    {
        boost::property_tree::ptree pt;
        boost::property_tree::ini_parser::read_ini("testini.ini", pt);

        int i = pt.get<int>("Section1.Value1");

        std::cout << i << std::endl;

        pt.put("Section1.Value1", 32);

        boost::property_tree::ini_parser::write_ini( "testini.ini", pt );
    }
    catch (std::exception& e)
    {
        std::cout << e.what() << std::endl;
    } 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样,我将访问以下 ini 文件 (testini.ini):

[Section1]
; Test variable
Value1=1
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但是,注释没有保留,新编写的文件看起来像这样

[Section1]
Value1=32
Run Code Online (Sandbox Code Playgroud)

我想要的是

[Section1]
; Test variable
Value1=32
Run Code Online (Sandbox Code Playgroud)

现在的问题是,有没有办法保留文件中的注释呢?它一定不需要使用ini-parser!