源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c++遍历lua table示例

  • 时间:2021-12-31 19:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c++遍历lua table示例
c/c++从栈上获取Lua压栈过来的table数据
[u]复制代码[/u] 代码如下:
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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部