将多个表返回给C ++,如何知道返回的表名

时间:2015-10-16 08:31:40

标签: c++ lua lua-table

我使用Lua实现一些功能,结果放在表 s 中并返回到C ++代码。例如,在Lua的末尾,我将这些返回给C ++

return names, ages, courses

现在在C ++中,我需要读取返回的表中的元素。我怎么知道表的名称,以便我知道要检索哪些元素?换句话说,遵循sudo代码说明我想做的事情:

if table_name == "names":  //some commands can realize this?
    lua_getfield(L, -1, "Tom");
    the_name = lua_tostring(L, -1);
    cout << the_name << endl;
    Lua_pop(L, 1);
elif table_name == "ages": //similar to last comment...
    lua_getfield(L, -1, "girls");
    the_age = lua_tostring(L, -1);
    ....... //some operations

任何人都有任何想法?顺便说一句,我在win7上使用Lua5.3.1

2 个答案:

答案 0 :(得分:1)

您不会知道先前存储表的变量名,但您的Lua函数会按特定顺序返回它们。在C ++中,这些表放在堆栈中,因此courses是最高值,ages是下一个。

答案 1 :(得分:0)

您可以在所有表​​格中包含一个包含其名称/类型的字段。