是否有任何用于C ++的Lua表迭代器包装器?

时间:2013-03-09 11:20:13

标签: c++ lua iterator lua-table

我想从Lua代码调用一些C ++函数并在参数中传递Lua表,如下所示:

call_cpp_function_from_lua({ x = 10, y = 20 })

call_cpp_function_from_lua中我想得到并使用迭代器来表示Lua表的C ++表示,如下所示:

std::map<boost::variant<LuaTypesList>, boost::variant<LuaTypesList>>::iterator it = getLuaTableBegin();

我可以使用C API来执行此操作,但这很容易出错,请参阅Iterating through a Lua table from C++?

1 个答案:

答案 0 :(得分:1)

QtLua library为Lua表实现C ++迭代器。它有Value::iteratorValue::const_iterator类,允许迭代Lua表。以下是如何使用它们的简短示例:

// code from examples/cpp/value/iterate.cc:32

    QtLua::State state;

    // New lua table value
    state.exec_statements("table = { a = 1, b = 2, c = 3 }");

    QtLua::Value table = state["table"];

    // Iterate over lua table from C++ code
    for (QtLua::Value::const_iterator i = table.begin(); i != table.end(); i++)
      qDebug() << i.key().to_string_p()
               << i.value().to_string_p();