c++获取lua嵌套table某属性的值
开发环境:vs2012
lua版本:LuaJIT-2.0.2
lua文件作为配置文件,c++读取这个配置。
lua配置结构如下
SceneConfig =
{
[] = { name ="lsySB", sex = },
[] =
}
我们读取SceneConfig[1].name的值,这是一个嵌套的table
int main()
{
lua_State *luaState = lua_open();
// 创建 Lua 状态. 其实就是一个数据结构.
luaL_openlibs(luaState);
// 加载所有标准库, 例如: print 等.
luaL_dofile(luaState, "../Debug/test.lua");
//index为0,表示把栈全清空
lua_settop(luaState, );
//根配置入栈
lua_getglobal(luaState, "SceneConfig");
//key入栈
lua_pushinteger(luaState, );
//key弹出得到key对应的table入栈
lua_gettable(luaState, );
//子Key入栈,此时内table索引为-2
lua_pushstring(luaState, "name");
//得到name对应的值,key出栈,值入栈
lua_gettable(luaState, -); //获得栈顶值
cout << lua_tostring(luaState, -) << endl;
//栈顶值出栈
lua_pop(luaState, );
//压入key值
lua_pushstring(luaState,"sex");
//弹出key值,对应的值入栈
lua_gettable(luaState, -);
//得到栈顶值
cout << lua_tointeger(luaState, -) << endl;
getchar();
}
首先得到全局变量,然后压入key,1,这里1是int,而不能用“1”,根据这个key取出来的是里面的table即Sceneconfig[1]的值,
重复上述过程,name压入栈然后得出name的值。
上述过程是最原始的一种方法,下面有个简单的方法。
通过
int lua_getfield (lua_State *L, int index, const char *k);
把 t[k] 的值压栈, 这里的 t 是索引指向的值。 在 Lua 中,这个函数可能触发对应 "index" 事件对应的元方法。
这里很容易的可以通过key得到table的值,相当于lua的标准库做了一个封装
c++获取lua嵌套table某属性的值的更多相关文章
- [Jmeter]Xpath获取元素某个属性的值,以及获取最后一个元素某个属性的值
XPath获取元素某个属性的值 XPath query: clients/attribute::total XPath获取最后一个元素某个属性的值 XPath query: /clients/c ...
- selenium 获取某元素的 某属性 的值
selenium 获取某元素的 某属性的值 1 先通过元素定位,获得此元素的 WebElement; WebElement yuansu = driver.findElement(By.clas ...
- [转载]C#用正则表达式 获取网页源代码标签的属性或值
最近调试程序需要用到获取网页指定标签的属性和值,找到了一个比较好的正则匹配方法,特此备份. [原]C#用正则表达式 获取网页源代码标签的属性或值 整理两个 在C#中,用正则表达式 获取网页源代码标签的 ...
- Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
大家都知道Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封装该私有属 ...
- C#用正则表达式 获取网页源代码标签的属性或值
1.有url获取到网页源代码: using System.Web; using System.IO; using System.Net; private void GetHtmlinfo(string ...
- v-for遍历出的元素上添加click事件,获取对应元素上的属性id值
<span v-for="(n,nav) in floorList" data-id="{{nav.itemId}}" v-on:click=" ...
- select 获取option中其他的属性的值
<select name="tag_keys[]" id="category_type" required> <option value=&q ...
- lua的table表处理 及注意事项
lua,一款很轻量级很nice很强大的脚本语言,做为lua中使用最为频繁的table表,在使用之时还是有颇多的好处与坑的: 下面是大牛 云风的一片关于lua table的blog,可使得对lua ta ...
- C#用正则表达式 获取标签的属性或值
整理两个 在C#中,用正则表达式 获取网页源代码标签的属性或值的方法 : 1.获取标签中的值: string str="<a href=\"www.csdn.net\&quo ...
随机推荐
- HDU1757
解题思路:分析需要不少时间,比较懒,直接把别人的分析贴在这里, 然后贴上自己写的代码: K相当之大.所以逐一递推的算法无法胜任.这时我们就不得不运用矩阵加速.首先来讲一下矩阵乘法: 若一矩阵的列数与另 ...
- sync-settings(vscode)
vscode插件以及设置 sync-download e45c6db33cd91d661e0cc545efb6817c
- BZOJ4361 isn 【树状数组优化DP】*
BZOJ4361 isn Description 给出一个长度为n的序列A(A1,A2-AN).如果序列A不是非降的,你必须从中删去一个数,这一操作,直到A非降为止.求有多少种不同的操作方案,答案模1 ...
- Could Not Launch Appium Inspector
环境: macOS High Sierra 10.13.2 appium GUI 1.5.3 出现如上图报错时,尝试将App Path和Device Name勾选,如下图:
- UICollectionView官方使用示例代码研究
注:这里是iOS6新特征汇总贴链接 iOS6新特征:参考资料和示例汇总 这个链接可以学习到UICollectionView的相关介绍:iOS6新特征:UICollectionView介绍 由于UICo ...
- Clairewd’s message(哈希模板+)
个人心得:一开始就是知道用哈希,但是无从下手,很明显是对哈希不太了解和思维不太好. 先来看一下这一题涉及到的哈希吧和这题的思路吧,思路就是对所给的密文用原文和翻译后进行hash处理,那么必然存在后面那 ...
- 《selenium2 python 自动化测试实战》(7)——定位一组对象
定位一组对象 定位一组对象——find_elements_by_...(),注意,这里是elements,复数.返回的结果是一个列表,我们取值的时候就要用列表取值的方式来获得自己想要的元素.需要注意的 ...
- SmartFoxServer资料
http://blog.sina.com.cn/s/blog_6bc2090c0100pgkx.html http://www.cnblogs.com/winson-w/p/3555106.html ...
- 我的 SONY MP3 NWZ-B105F
我的 SONY MP3 NWZ-B105F 只有 2GB 的容量,好像2007年出来的,现在还可以开机和播放. 使用的 SigmaTel 的方案 BGA 的封装,1.1inch 屏幕竟然是彩屏,锂电池 ...
- JavaFX 之窗口大小自由拉伸(四)
一.问题场景 同样的,隐藏掉窗体的默认标题栏也会导致窗体大小自由拉伸功能的失效. 二.解决思路 判断鼠标在窗体的位置,改变鼠标样式,给窗体组件添加拖拽事件监听器,根据鼠标移动位置改变窗体大小. 三.代 ...