手机
当前位置:查字典教程网 >编程开发 >C语言 >c++遍历lua table示例
c++遍历lua table示例
摘要:c/c++从栈上获取Lua压栈过来的table数据复制代码代码如下:maptraverse_table(lua_State*L,intind...

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;

}

【c++遍历lua table示例】相关文章:

C语言中的BYTE和char深入解析

c++ dynamic_cast与static_cast使用方法示例

深入C语言把文件读入字符串以及将字符串写入文件的解决方法

c++二叉树的几种遍历算法

基于WTL 双缓冲(double buffer)绘图的分析详解

Define,const,static用法总结

关于数组做函数参数的问题集合汇总

ubuntu中打开终端的三种解决方法

浅析c++中new和delete的用法

将正小数转化为2-9进制小数的实现方法

精品推荐
分类导航