如何使用sol2编写包含lua表的文件

时间:2016-04-27 04:20:06

标签: c++ lua

在查看this等帖子并喜欢语法之后,我已经决定使用lua作为我的程序的配置管理,sol2最近已经发布,所以我使用了

所以我的问题是,如何获取我的lua状态中的所有变量并将它们吐出文件?

说,

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

最终会吐出来

foo = {
    bar = 2
    foobar = {}
}

这是否可能?如果可行,怎么做?

1 个答案:

答案 0 :(得分:0)

我使用this serializer来序列化我的表并将其打印出来,非常简单!

这就是我想出来的

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());
}