国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++遍歷lua table示例

2020-01-26 15:31:41
字體:
來源:轉載
供稿:網友

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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤城县| 沧源| 安乡县| 景洪市| 鄯善县| 望江县| 济阳县| 垦利县| 葫芦岛市| 潜山县| 虞城县| 上蔡县| 洛扎县| 古浪县| 德江县| 渝中区| 永宁县| 灯塔市| 永年县| 彭水| 龙陵县| 光泽县| 宁陕县| 启东市| 桃园市| 荆门市| 鲜城| 连城县| 淳安县| 金华市| 新余市| 开江县| 边坝县| 府谷县| 江达县| 平远县| 清原| 抚松县| 虞城县| 恩平市| 南部县|