C读取lua表

来源:互联网 发布:淘宝网男士长袖t恤 编辑:程序博客网 时间:2024/06/04 20:05
先介绍一下这个函数,引用自http://www.runoob.com/manual/lua53doc/manual.html  lua官方文档。
int lua_next (lua_State *L, int index);

从栈顶弹出一个键, 然后把索引指定的表中的一个键值对压栈 (弹出的键之后的 “下一” 对)。 如果表中以无更多元素, 那么 lua_next 将返回 0 (什么也不压栈)。

典型的遍历方法是这样的:

     /*  表放在索引 't' 处 */     lua_pushnil(L);  /* 第一个键 */     while (lua_next(L, t) != 0) {       /* 使用 '键' (在索引 -2 处) 和 '值' (在索引 -1 处)*/       printf("%s - %s\n",              lua_typename(L, lua_type(L, -2)),              lua_typename(L, lua_type(L, -1)));       /* 移除 '值' ;保留 '键' 做下一次迭代 */       lua_pop(L, 1);     }

在遍历一张表的时候, 不要直接对键调用 lua_tolstring , 除非你知道这个键一定是一个字符串。 调用 lua_tolstring 有可能改变给定索引位置的值; 这会对下一次调用 lua_next 造成影响。

关于迭代过程中修改被迭代的表的注意事项参见 next 函数。


简单来说,就是压入一个空, lua_next弹出key和value。再弹出栈顶元素,lua_next弹出key和value。直到lua_next为0。




0 0
原创粉丝点击