C++,我有一个 map<string, string>, ,包含一个未知的数量的项目。我如何可以通过这一Lua功能,使Lua功能可以使用的数据作为一个表?

有帮助吗?

解决方案

如果你想有一个真正的LUA表:

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

for (std::map::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);
}

与右类型为地图中取代..

其他提示

一对夫妇选择...

  1. 复制地图进入一个新的Lua表,并通过Lua表。

  2. 创建一个 代理代表 引导读和写通过一metatable的 __index__newindex metamethods

在缺点(1)所有复制的,当然。

在缺点(2), pairs() 不会的工作的代表

讨论修正,以Lua为广义 pairs在维基这个邮件列表螺纹.广义 pairs 预计 5.2Lua

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top