C++读取lua table

lua_pushnil(tolua_S);
      int index = lua_gettop(tolua_S);
      
      map<string, string> dict;
      // 现在的栈:-1 => nil; index => table
      index = index - 1;
      while (lua_next(tolua_S, index))
      {
          // 现在的栈:-1 => value; -2 => key; index => table
          // 拷贝一份 key 到栈顶,然后对它做 lua_tostring 就不会改变原始的 key 值了
          lua_pushvalue(tolua_S, -2);
          // 现在的栈:-1 => key; -2 => value; -3 => key; index => table
          
          const char* key = lua_tostring(tolua_S, -1);
          const char* value = lua_tostring(tolua_S, -2);
//          if (lua_isstring(tolua_S, -2)) {
//              dict->setObject(CCString::create(lua_tostring(tolua_S, -2)), key);
//          } else if (lua_isnumber(tolua_S, -2)) {
//              dict->setObject(CCDouble::create(lua_tonumber(tolua_S, -2)), key);
//          }
          dict[key] = value;
          
          // 弹出 value 和拷贝的 key,留下原始的 key 作为下一次 lua_next 的参数
          lua_pop(tolua_S, 2);
          // 现在的栈:-1 => key; index => table
      }

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值