c++遍历lua table示例
c/c++从栈上获取Lua压栈过来的table数据
map<string,string> traverse_table(lua_State *L, int index)
{
map<string,string> data;
lua_pushnil(L);
// 现在的栈:-1 => nil; index => table
index = index - 1;
while (lua_next(L, index))
{
// 现在的栈:-1 => value; -2 => key; index => table
// 拷贝一份 key 到栈顶,然后对它做 lua_tostring 就不会改变原始的 key 值了
lua_pushvalue(L, -2);
// 现在的栈:-1 => key; -2 => value; -3 => key; index => table
const char* key = lua_tostring(L, -1);
const char* value = lua_tostring(L, -2);
data[key]=value;
// 弹出 value 和拷贝的 key,留下原始的 key 作为下一次 lua_next 的参数
lua_pop(L, 2);
// 现在的栈:-1 => key; index => table
}
// 现在的栈:index => table (最后 lua_next 返回 0 的时候它已经把上一次留下的 key 给弹出了)
// 所以栈已经恢复到进入这个函数时的状态
return data;
}
相关推荐
-
使用Lua来扩展C++程序的方法
介绍 如果用户能够通过一些脚本语言来修改应用本身的行为,那么许多应用可以变得更适合用户使用.一些商业应用就提供了此类便利.例如 Microsoft Office 的 VBA 脚本编程或在视频游戏 World of Warcraft 中使用 Lua .脚本语言把应用作为一个平台提供一系列终端用户可以获得并操控的服务. 做为嵌入到程序中的语言,我们有很多可用的选择:开源和不开源的脚本引擎,或者可以从头开始创建一个.现在,最为熟知的脚本语言是JavaScript,Lua和Python,还有很多其它的
-
Lua和C++的通信流程代码实例
上一章传送门:http://www.jb51.net/article/55088.htm 本章我们来学习一个小Demo,也就是上一章中的场景:C++从Lua中获取一个全局变量的字符串. 1. 引入头文件 我们来看看要在C++中使用Lua,需要些什么东西 复制代码 代码如下: /* 文件名: HelloLua.h 描 述: Lua Demo 创建人: 笨木头 创建日期: 2012.12.24 */ #ifndef __HELLO_LUA_H_ #def
-
Lua和C语言的交互详解
前言 对于Lua的基础总结总算告一段落了,从这篇博文开始,我们才真正的进入Lua的世界,一个无聊而又有趣的世界.来吧. Lua语言是一种嵌入式语言,它本身的威力有限:当Lua遇见了C,那它就展示了它的强大威力.C和Lua是可以相互调用的.第一种情况是,C语言拥有控制权,Lua是一个库,这种形式中的C代码称为"应用程序代码":第二种情况是,Lua拥有控制权,C语言是一个库,这个时候C代码就是"库代码"."应用程序代码"和"库代码"
-
c++遍历lua table示例
c/c++从栈上获取Lua压栈过来的table数据 复制代码 代码如下: map<string,string> traverse_table(lua_State *L, int index){ map<string,string> data; lua_pushnil(L); // 现在的栈:-1 => nil; index => table index = index - 1; while (lua_next(L, index)) {
-
C++遍历Lua table的方法实例
Lua table数据如下: 复制代码 代码如下: --$ cat test.lua lua文件 user = { ["name"] = "zhangsan", ["age"] = "22", ["friend"] = { [1] = { ["name"] = &quo
-
Javascript遍历Html Table示例(包括内容和属性值)
1: 遍历并输出Table中值 <table id="tb"> <tr> <td></td> </tr> <tr> <td></td> </tr> </table> function f() { var t=document.getElementById("tb").childNodes.item(0); for(var i=0;i< t.c
-
Lua table简明总结
一. table table是lua唯一的数据结构.table 是 lua 中最重要的数据类型. table 类似于 python 中的字典.table 只能通过构造式来创建.其他语言提供的其他数据结构如array.list等等,lua都是通过table来实现的.table非常实用,可以用在不同的情景下.最常用的方式就是把table当成其他语言的数组. 实例1: 复制代码 代码如下: mytable = {} for index = 1, 100 do mytable[index] =
-
Map集合的四种遍历方式代码示例
很久以前写的代码,和上一个做比较吧!便于以后查看. import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "a&
-
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
如下所示: <tbody id="already_question_list"> <tr> <td><?php echo $val['unique_number']; ?></td> <td><?php echo $val['year'].'-'.$val['series']; ?></td> <td><?php echo $val['content'] ?><
-
Java递归算法遍历部门代码示例
递归是一个非常有用的知识点.写点实例帮助自己记忆 中间有过程代码 首先一个javapojo类 package com.qcf.po; import java.util.HashSet; import java.util.Set; public class Depart { private long id; private String name; private String destion; //用户 Set<User> users=new HashSet<User>(); //
-
C++遍历磁盘驱动器的示例代码
#include <stdio.h> #include <windows.h> typedef struct tagDRIVER { // (1)磁盘盘符 wchar_t disk; // (2)磁盘总的大小 double all; // (3)磁盘可用空间 double free; // (4)磁盘类型(是光盘.硬盘.还是移动硬盘) int type; }DRIVER; void GetDrivers() { BOOL fResult; // 定义 磁盘消息结构体 DRIVER
-
Go 容器遍历的实现示例
前文回顾 前面的文章主要介绍了 Go 语言中提供了 list 列表和 Map 映射关系容器,这两种容器都是我们日常经常使用到的.介绍了好多种的 Go 语言提供的基础容器,免不了要查询容器中的数据,那么是如何实现遍历的呢?本文将会介绍几种常用容易的遍历及其使用. 容器遍历 Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素.在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对.
-
C++编程使用findfirst和findnext查找及遍历文件实现示例
目录 一.首先了解一下一个文件结构体: 二.用 _findfirst 和 _findnext 查找文件 这两个函数均在io.h里面 一.首先了解一下一个文件结构体: struct _finddata_t { unsigned attrib; time_t time_create; time_t time_access; time_t time_write; _fsize_t size; char name[260]; }; time_t,其实就是long 而_fsize_t,就是unsigned
随机推荐
- Angular2.js实现表单验证详解
- js弹出框轻量级插件jquery.boxy使用介绍
- php模拟asp中的XmlHttpRequest实现http请求的代码
- servlet实现文件下载的实用类分享
- MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题
- javascript之querySelector和querySelectorAll使用说明
- PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
- Jquery Easyui进度条组件Progress使用详解(8)
- Javascript 各浏览器的 Javascript 效率对比
- Android中EditText禁止输入表情的实例代码
- python扫描proxy并获取可用代理ip的实例
- 点选TOP后并不是直接跳到页顶的,而是滚动上去的
- php中JSON的使用方法
- C++ 实现静态单链表的实例
- Android 实现仿支付宝的密码均分输入框
- java程序员必须要学会的linux命令总结(推荐)
- java网络爬虫连接超时解决实例代码
- Linux内核设备驱动之内存管理笔记整理
- 把django中admin后台界面的英文修改为中文显示的方法
- Python实现的在特定目录下导入模块功能分析