如何使用sol2在包含lua表的文件中写入文件

在看到像这篇文章这样的帖子并喜欢它的语法后,我决定将lua作为我的程序配置管理,最近发布了sol2,所以我正在使用它。

因此,我的问题是,如何获取我的lua状态中的所有变量并将它们写入文件中呢?

例如:

sol::state lua;
lua["foo"]["bar"] = 2;
lua["foo"]["foobar"] = lua.create_table();

最终会输出:

foo = {
    bar = 2
    foobar = {}
}

这是否可能?如果可能,如何实现呢?

点赞
用户4376737
用户4376737

我使用了 这个序列化器 序列化了我的表格并将其打印出来,真的很容易!

这是我写的代码:

std::string save_table(const std::string& table_name, sol::state& lua)
{
    auto table = lua["serpent"];
    if (!table.valid()) {
        throw std::runtime_error("Serpent not loaded!");
    }
    if (!lua[table_name].valid()) {
        throw std::runtime_error(table_name + " doesn't exist!");
    }
    std::stringstream out;
    out << table_name << " = ";
    sol::function block = table["block"];
    std::string cont = block(lua[table_name]);
    out << cont;
    return std::move(out.str());
}
2016-04-28 11:07:24