Lua学习笔记(5) : 取得table內变量
2015-12-23 16:45
435 查看
1. 前言
在Lua中有个好用的数据型态叫作table,有点类似PHP中的Array先来看个有table的Lua代码
[luaDemo.lua]
name = "LuaDemo" monster = { name = "Dinomon", hp = 1000, atk = 65 }
在上面的代码中,有一个名为monster的table
其中含有name、hp、atk 这些变量
如果要让C++取得table内的变量值,可不能用Lua学习笔记(2)中的取得Lua变量的方法
否则取得的值将是LuaDemo
本篇教程给出了一个取得table内变量值的实例
2.代码实现
老样子,因为内容比较简单,概念与前几篇类似,有了前面几篇教程做铺垫,我也不多说废话直接给出实际的代码,附上详细的注释,相信在看完代码后就能了解程序运行的原理了
#include "include\lua.h" #include "include\lauxlib.h" #include "include\lualib.h" #include "windows.h" void main(int argc, char* argv[]) { const char* strName; lua_State *pLua = luaL_newstate(); // Lua5.2后的版本遗弃lua_open(),改用luaL_newstate() if(!pLua) { printf("Failed to open Lua.\n"); return; } luaL_openlibs(pLua); // Lua5.1以上使用此函数开启库 if(luaL_dofile(pLua, "luaDemo.lua")!=0) // 执行Lua腳本,若返回0则成功 { printf("Failed to run lua.\n"); return; } lua_settop(pLua, 0); // Lua堆栈栈顶索引重置为0 lua_getglobal(pLua, "monster"); // 指定C++欲取得之变量值所在的table变量名,此时table变量名字符串会推入堆栈栈顶 lua_pushstring(pLua, "name"); // 对于欲取得的table中的变量值,变量名以字符串推入堆栈栈顶 lua_gettable(pLua, -2); // 开始取得table中的变量值,此函数第二个参数为指定之table变量名在堆栈中的索引 // Lua会把前两个堆栈中元素取出寻找,然后把找到的值推入堆栈栈顶 if(lua_isstring(pLua, -1)!=0) // 判断堆栈中的值是否为我们要的字串型态的值,若返回非0则正確 { strName = lua_tostring(pLua, -1); // 取出堆栈中的字串值 printf("%s\n", strName); // 印出结果 } lua_close(pLua); system("pause"); return; }
3. Output
Dinomon
相关文章推荐
- Lua-require
- 不同版本Lua介绍
- Lua包管理工具Luarocks介绍
- lua让我的师兄不敢拿8k的薪水
- lua类与对象
- 31.Evaluate the following SQL commands:
- lua在stm32上的移植
- lua db操作工具类
- Lua5.1中的API函数
- 30.Evaluate the following CREATE TABLE commands:
- Lua与C之间的调用
- Lua工具类
- 源码安装lua
- 导出 C/C++ API 给 Lua 使用(转)
- Lua和C++交互详细总结(转)
- Lua知识备忘录
- Lua 5.1 参考手册
- lua排序注意事项
- 如何用BabeLua运行Lua代码
- Lua简明教程