您的位置:首页 > 编程语言 > Lua

C读取lua表

2016-09-19 14:48 267 查看
先介绍一下这个函数,引用自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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: