Как говорит Хавьер, вам нужна функция lua_next()
. Я подумал, что пример кода может помочь прояснить ситуацию, так как это может быть немного сложно использовать на первый взгляд.
Цитата из руководства:
Типичный обход выглядит так:
/* table is in the stack at index 't' */
lua_pushnil(L); /* first key */
while (lua_next(L, t) != 0) {
/* uses 'key' (at index -2) and 'value' (at index -1) */
printf("%s - %s\n",
lua_typename(L, lua_type(L, -2)),
lua_typename(L, lua_type(L, -1)));
/* removes 'value'; keeps 'key' for next iteration */
lua_pop(L, 1);
}
Помните, что lua_next()
очень чувствителен к значению ключа, оставленному в стеке. Не вызывайте lua_tolstring()
для ключа, если он действительно не является строкой, поскольку эта функция заменит значение, которое она преобразует.