通过 const char ** 创建 Lua 表 Lua 是一种通用、轻量级的编程语言,具有可扩展性和可嵌入性的特点。可以将 Lua 嵌入到其他的程序中使用,通过创建 Lua Table 来管理和操作数据。 如果要使用 C 语言来创建 Lua Table,可以通过 const char ** 来轻松地实现。这个 const char ** 编译器会将其识别为一个指向字符串数组的指针,因此我们可以使用它来遍历字符串数组,将每个字符串作为 Lua Table 的一个元素。 下面是一个示例代码,演示了如何通过 const char ** 来创建 Lua Table: ```c #include "lua.h" #include "lauxlib.h" #include "lualib.h" int main(int argc, const char *argv[]) { lua_State *L = luaL_newstate(); // 创建一个空的 Lua Table lua_newtable(L); // 将 const char ** 中的每个字符串添加到 Lua Table const char **strings = {"hello", "world", "lua", NULL}; for (int i = 0; strings[i]; i++) { lua_pushnumber(L, i + 1); lua_pushstring(L, strings[i]); lua_settable(L, -3); } // 打印 Lua Table 中的内容 lua_getglobal(L, "print"); lua_pushvalue(L, -2); lua_call(L, 1, 0); // 关闭 Lua 解释器 lua_close(L); return 0; } ``` 在上面的示例代码中,我们使用了 lua_newtable() 函数来创建一个空的 Lua Table,使用 for 循环来遍历 const char ** 中的字符串数组,并将它们添加到 Lua Table 中。最后,我们使用 lua_getglobal() 和 lua_call() 函数将 Lua Table 的内容打印出来,并关闭 Lua 解释器。 通过这个示例代码,我们可以看到如何使用 const char ** 来创建 Lua Table,这样我们就可以通过 C 语言来管理和操作 Lua 数据。

我有一个 const char **,它的长度会不同,但我想从 const char ** 创建一个 Lua 数组。

我的 const char ** 如下所示:

arg[0]="Red"
arg[1]="Purple"
arg[2]="Yellow"

我需要将这个数组转换为 Lua 的全局表,但是我不太擅长操作 Lua,不知道该如何进行。

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

点赞
stackoverflow用户28817
stackoverflow用户28817
int main()
{
   char* arg[3] = {
      "Red",
      "Purple",
      "Yellow" };

   // 创建 Lua 状态机
   Lua_state* L = luaL_newstate();

   // 创建 arg 表
   lua_createtable(L, 3, 0);
   int table_index = lua_gettop(L);

   for(int i =0; i<3; ++i )
   {
      // 获取 Lua 栈中的字符串,以便使用
      lua_pushstring(L, arg[i]);

      // 可以使用 lua_settable 完成,但那需要同时推入整数
      // 刚推入的字符串将从栈中移除
      // 注意索引是 i+1,因为 Lua 从 1 开始计数
      lua_rawseti(L, table_index, i+1);
   }

   // 现在将我们所操作的表放入全局变量中
   // Lua 将会从栈中移出表,让它空空如也
   lua_setglobal(L,"arg");
}
2010-06-25 01:28:01