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 ...
随机推荐
- Android内存优化(三)避免可控的内存泄漏
相关文章 Android性能优化系列 Java虚拟机系列 前言 内存泄漏向来都是内存优化的重点,它如同幽灵一般存于我们的应用当中,有时它不会现身,但一旦现身就会让你头疼不已.因此,如何避免.发现和解决 ...
- MongoDB使用笔记
先创建目录,创建log文件,然后启动服务 cd /d D:\Program Files\MongoDB\Server\3.4\bin\ mongod.exe --dbpath d:\data\db - ...
- D. Closest Equals(线段树)
题目链接: D. Closest Equals time limit per test 3 seconds memory limit per test 256 megabytes input stan ...
- IOS开发 多线程编程 - NSThread
每个iOS应用程序都有个专门用来更新显示UI界面.处理用户的触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验.一般的解决方案就是将 ...
- 关于ehcache缓存的使用(简单对比redis)
前言 最近在做一个项目,某个接口查询数据到返回数据总计需要7000+毫秒,一直在考虑优化的问题,优化也有原来的一家一家查询到一次查询所有的,在查询不同天数.结果是1500+,虽然优化了不少,但是数据结 ...
- 《DSP using MATLAB》示例Example 8.26
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- xpath与css_selector定位详解
例题:分别用xPath和css_selector定位下图的img标签 答案: xpath:.//*[@id='fstscr']/div[3]/div[2]/a/img css_selector: . ...
- nginx 缓存处理
核心指令 proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g; proxy_cache ...
- Oracle 12c RAC 日志体系结构的变化
1 说明 在11g中,查看GRID的日志,会进入$ORACLE_HOM/log. [grid@cndba.cn ~]$ cd $ORACLE_HOME/log/ [grid@cndba.cn l ...
- angular指令,异步调用数据,监控数据的变化(自定义一个表头的指令)
angular框架中提供了很多有效的指令,指令的目的就是为了提高代码的复用率,提高工作效率. 下面我们自己来定义一个指令: 一点建议:写指令名字的时候,尽量不要用用大写,下划线等,否则会有很大的坑等着 ...