gpt4 book ai didi

c++遍历lua table示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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;
}

最后此篇关于c++遍历lua table示例的文章就讲到这里了,如果你想了解更多关于c++遍历lua table示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0