雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

c++遍歷lua table示例

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊:

c/c++從棧上獲取Lua壓棧過來的table數(shù)據(jù)

復(fù)制代碼 代碼如下:

map<string,string> traverse_table(lua_State *L, int index)
{
 map<string,string> data;
    lua_pushnil(L);
    // 現(xiàn)在的棧:-1 => nil; index => table
 index = index - 1;
    while (lua_next(L, index))
    {
        // 現(xiàn)在的棧:-1 => value; -2 => key; index => table
        // 拷貝一份 key 到棧頂,然后對它做 lua_tostring 就不會改變原始的 key 值了
        lua_pushvalue(L, -2);
        // 現(xiàn)在的棧:-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 的參數(shù)
        lua_pop(L, 2);
        // 現(xiàn)在的棧:-1 => key; index => table
    }
    // 現(xiàn)在的棧:index => table (最后 lua_next 返回 0 的時候它已經(jīng)把上一次留下的 key 給彈出了)
    // 所以棧已經(jīng)恢復(fù)到進(jìn)入這個函數(shù)時的狀態(tài)
 return data;
}

上一篇:c++將數(shù)組名作為函數(shù)參數(shù)對數(shù)組元素進(jìn)行相應(yīng)的運(yùn)算

欄    目:C語言

下一篇:c++將引用或者是指針作為函數(shù)參數(shù)實現(xiàn)實參的運(yùn)算

本文標(biāo)題:c++遍歷lua table示例

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3665.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有