C读取lua表

先介绍一下这个函数,引用自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。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值