c++ - 如何从 C++ 中的 Lua 函数获取返回表?

标签 c++ lua lua-table

我正在尝试找出如何从 C++ 中的 Lua 函数获取返回的表。

我的代码:

if (lua_pcall(L, 0, 1, 0)) {
        std::cout << "ERROR : " << lua_tostring(L, -1) << std::endl;
}
vector<float> vec;

if (lua_istable(L, -1) { 

    //how to copy table to vec?
}

如果表格大小未知,如何将返回的表格复制到 vector 中?谢谢!

最佳答案

我想我找到了使用 lua_next 的方法。

lua_getglobal(L, name);

if (lua_pcall(L, 0, 1, 0)) {
        std::cout << "ERROR : " << lua_tostring(L, -1) << std::endl;
}
vector<float> vec;

if (lua_istable(L, -1) { 

   lua_pushvalue(L, -1);
   lua_pushnil(L);

   while (lua_next(L, -2))
   {

        if (lua_isnumber(L, -1))
        {
            vec.push_back(lua_tonumber(L, -1));
        }
        lua_pop(L, 1);
    }
    lua_pop(L, 1);
}

关于c++ - 如何从 C++ 中的 Lua 函数获取返回表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063716/

相关文章:

c - 如何访问 lua_pcall 调用的 C 函数的返回值?

math - SVG 矩阵到旋转度数

lua - 有没有办法将 "listen"更改为 Lua 表?

c++ - 如何将表从 Lua 传递到 C++?

c++ - 什么时候需要修改socket的接收缓冲区大小?

java - for 循环是否在每次迭代中重新评估其主体中的函数?

c++ - 在 C++ 中克隆一个 wchar_t*

c++ - 如何使用QT显示图像的一部分?

lua - 为什么 L->l_G->_defaultmeta.value.gc 总是 NULL?

lua - 在 Lua 中使用 'Object' 函数?