如何从 C++ 中的 Lua 函数返回 table?
How to get returned table from Lua function in C++?
我正在尝试找出如何从 C++ 中的 Lua 函数获取返回的 table。
我的代码:
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?
}
如果 table 大小未知,如何将返回的 table 复制到矢量?谢谢!
我想我找到了使用 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++ 中的 Lua 函数获取返回的 table。
我的代码:
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?
}
如果 table 大小未知,如何将返回的 table 复制到矢量?谢谢!
我想我找到了使用 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);
}