如何在C ++中创建Lua表,并将其传递给Lua函数?

在C++中,我有一个包含未知条目数量的map<string,string>,我想把它传递给Lua函数,以便Lua函数可以将数据用作表格。

原文链接 https://stackoverflow.com/questions/453769

点赞
stackoverflow用户33252
stackoverflow用户33252

一些选项...

  1. 将地图复制到一个新的 Lua 表中,并传递 Lua 表。

  2. 创建一个代理表,通过元表的 __index__newindex 元方法来指示读取和写入操作。

(1) 的缺点当然是需要进行所有复制。

(2) 的缺点是 pairs() 在代理表上不起作用。

关于 Lua 的普遍化 pairs 的修复讨论在 维基邮件列表主题 中。Lua 5.2 预计提供普遍化 pairs

2009-01-17 18:43:30
stackoverflow用户54815
stackoverflow用户54815

如果你想要一个真正的 Lua 表:

lua_newtable(L);
int top = lua_gettop(L);

for (std::map<YOUR_KEY_TYPE, YOUR_VALUE_TYPE>::iterator it = mymap.begin(); it != mymap.end(); ++it) {
    const char* key = it->first.c_str();
    const char* value = it->second.c_str();
    lua_pushlstring(L, key, it->first.size());
    lua_pushlstring(L, value, it->second.size());
    lua_settable(L, top);
}

请注意根据你的映射表替换正确的类型。

2009-01-19 22:32:58