Frage

Ich habe eine const char **, die von unterschiedlicher Länge sein wird, aber ich mag einen Lua-Array aus dem const char ** erstellen.

ist Myconst char ** so etwas wie diese

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

Ich brauche diese Anordnung zu einer globalen Tabelle in Lua zu konvertieren, aber ich bin nicht sicher, wie dieser zu gehen, wie ich zu manipulieren Lua bin nicht sehr gut.

War es hilfreich?

Lösung

int main()
{
   char* arg[3] = {
      "Red",
      "Purple",
      "Yellow" };

   //create lua state
   Lua_state* L = luaL_newstate();

   // create the table for arg
   lua_createtable(L,3,0);
   int table_index = lua_gettop(L);

   for(int i =0; i<3; ++i )
   {
      // get the string on Lua's stack so it can be used
      lua_pushstring(L,arg[i]);

      // this could be done with lua_settable, but that would require pushing the integer as well
      // the string we just push is removed from the stack
      // notice the index is i+1 as lua is ones based
      lua_rawseti(L,table_index,i+1);
   }

   //now put that table we've been messing with into the globals
   //lua will remove the table from the stack leaving it empty once again
   lua_setglobal(L,"arg");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top