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。
相关文章推荐
- Lua 捕获 捕捉 模糊匹配
- Lua数学库
- Lua 操作系统库
- Lua 文件处理
- Lua和C++交互 学习记录之一:C++嵌入脚本
- Lua基本函数库
- Lua模式匹配
- Lua Table函数库
- Lua 字符串函数库
- Lua简明教程
- lua学习随笔
- lua 闭包
- LUA初始化
- Lua实现深度拷贝(Deep Copy)
- evaluate-division
- luarocks install with lua5.1 and luajit to install lapis
- lua相关的文件操作
- C/C++ Lua Parsing Engine
- excel导表自动转化为lua配置文件
- protoc-gen-lua 编译、安装、使用教程