`
mrjeye
  • 浏览: 176618 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

C++读取lua table

 
阅读更多
lua_pushnil(tolua_S);
      int index = lua_gettop(tolua_S);
      
      map<string, string> dict;
      // 现在的栈:-1 => nil; index => table
      index = index - 1;
      while (lua_next(tolua_S, index))
      {
          // 现在的栈:-1 => value; -2 => key; index => table
          // 拷贝一份 key 到栈顶,然后对它做 lua_tostring 就不会改变原始的 key 值了
          lua_pushvalue(tolua_S, -2);
          // 现在的栈:-1 => key; -2 => value; -3 => key; index => table
          
          const char* key = lua_tostring(tolua_S, -1);
          const char* value = lua_tostring(tolua_S, -2);
//          if (lua_isstring(tolua_S, -2)) {
//              dict->setObject(CCString::create(lua_tostring(tolua_S, -2)), key);
//          } else if (lua_isnumber(tolua_S, -2)) {
//              dict->setObject(CCDouble::create(lua_tonumber(tolua_S, -2)), key);
//          }
          dict[key] = value;
          
          // 弹出 value 和拷贝的 key,留下原始的 key 作为下一次 lua_next 的参数
          lua_pop(tolua_S, 2);
          // 现在的栈:-1 => key; index => table
      }

 

 
分享到:
评论

相关推荐

    c++读取lua配置文件的源代码

    总之,这个示例展示了如何在C++项目中读取Lua配置文件,解析其中的两层table结构,然后将结果转换为JSON格式。这种方法允许开发者利用Lua的灵活性和易读性进行配置管理,同时利用C++的强大功能进行性能关键的计算。...

    C++遍历Lua table的方法实例

    输出结果中会展示如何从Lua脚本中读取数据,并在C++中输出。 通过阅读和理解上述内容,我们不仅学习了如何用C++遍历Lua的table,还了解了如何在C++代码中嵌入Lua代码、执行Lua脚本,并获取Lua中的数据。这些知识在...

    c++和lua互相调用实例及讲解

    2. **加载Lua脚本**: 使用`luaL_loadbuffer`或`luaL_loadfile`函数读取和解析Lua脚本。这些函数将脚本内容加载到Lua虚拟机的堆栈中。 3. **执行Lua脚本**: 使用`lua_pcall`函数执行加载的脚本。这个函数会调用堆栈...

    cocos2d-x之c++和lua通信

    四、LuaTable与C++对象 Cocos2d-x允许将C++对象存储在Lua表中,这在处理复杂数据结构时非常有用。例如,你可以创建一个Lua表来表示游戏关卡,其中每个元素都是一个C++游戏对象。C++可以通过tolua++访问这些对象,...

    c++注册lua5.2经典

    8. **读取和写入Lua变量**:通过`lua_getglobal(L, "variable_name")`获取全局Lua变量,`lua_setglobal(L, "variable_name")`设置全局变量。对于表中的元素,可以使用`lua_gettable`和`lua_settable`进行操作。 9. ...

    lua解释器,lua开发

    Lua解释器是执行Lua源代码的程序,它负责读取、解析并执行Lua语言编写的脚本。在开发环境中,我们通常会用到如luajit(LuaJIT)这样的高性能解释器,它采用了Just-In-Time(JIT)编译技术,能够将Lua代码转换为机器...

    C或C++如何调用Lua语言.docx

    `lua_getglobal()` 用于获取全局变量(在本例中是函数名),接着将 C 中的参数压栈,使用 `lua_call()` 执行 Lua 函数,并从栈中读取返回值。最后,别忘了清理栈并关闭 Lua 环境。 对于调用 Lua 模块中的函数,情况...

    lua_Console lua解析器

    C++的智能指针或lua_createtable等API可以帮助实现这一点。 6. **命令行界面**:`simple_main.cpp`可能实现了命令行接口,允许用户输入Lua命令并立即看到结果。这可能涉及到标准输入/输出流的使用,以及对用户输入...

    Lua 5.2 Reference Manual(Lua 5.2引用指南)

    Lua 实现为一个库,用干净的 C 语言编写(即标准 C 和 C++ 的公共子集)。 由于 Lua 是一种扩展语言,它没有“主”程序的概念,只能嵌入在主机客户端(即嵌入式程序或简称主机)中工作。主机程序能够调用 Lua 函数...

    lua5.3.2编译器&解析器

    当你运行 Lua.exe 并传递一个包含 Lua 代码的脚本文件时,解释器会逐行读取并执行这些代码。它允许用户直接在命令行环境下编写和测试 Lua 语句,也可以用来运行存储有 Lua 程序的文件。在 Lua 5.3.2 版本中,这个...

    Lua编译源文件

    7. C API:Lua提供C接口,允许开发者用C/C++编写扩展,将C/C++函数暴露给Lua,从而增强Lua的功能。 8. 性能优化:Lua的字节码解释器设计精巧,运行速度快。同时,LuaJIT是一个著名的Lua即时编译器,可以将Lua代码...

    gm_stringtable:Lua的网络StringTable读取访问权限(Works客户端和服务器端)

    4. **读取和访问权限**:Lua脚本中,可以通过`GetStringTableValue`或`GetNumStrings`等函数来访问StringTable中的数据。权限控制也很重要,确保客户端只能访问它们被授权查看的字符串。 5. **优化和性能**:由于...

    Lua编程示例(五): C语言对Lua表的读取和添加

    2. **读取Lua表**:使用`getcolor`函数读取全局变量`background`中的颜色值,并打印出来。 3. **创建并设置颜色**:通过`setcolor`函数创建并设置多个颜色信息,这些信息被保存为全局变量。 4. **再次读取颜色**:...

    Lua源码剖析.doc

    在与C语言交互时,Lua提供了一套API接口,使得C代码能够操作Lua虚拟机的状态,如读取和设置栈上的值,执行Lua代码等。这种设计允许开发者在C/C++程序中灵活地嵌入Lua脚本,实现动态行为或扩展功能。 总之,Lua的...

    lua 5.1.4 以及安装 要用的 vcredist-x86

    `lfs`库,全称“Lua File System”,是为Lua提供文件系统操作的扩展库,包括创建、删除、移动、复制文件和目录,以及读取文件属性等功能。了解lfs库的API和使用方法对于进行文件系统编程至关重要。 `luaXML`是Lua的...

    lua-flatbuffers:Lua的flatbuffers库

    Lua与C/C++等系统级语言结合紧密,允许开发者将lua作为嵌入式脚本语言,实现业务逻辑的动态扩展。 **三、lua-flatbuffers库** lua-flatbuffers是将FlatBuffers序列化库集成到Lua环境中的项目,它允许Lua程序员利用...

    Lua资源打包

    对于非Lua文件,可以考虑使用如luajit-ffi(LuaJIT的 Foreign Function Interface)或tolua++等库来实现C/C++级别的内存管理和文件读取,这样可以将资源打包成库或数据包,然后在运行时动态加载。 在游戏开发中,...

    excelToLua.zip

    5. **tolua工具**:"tolua"通常是指tolua++,这是一个将C++代码转换为Lua脚本的工具,但在这个场景中,可能指的是将Excel数据转换为Lua格式的过程。虽然Python脚本可以直接完成转换,但如果你需要更复杂的映射规则...

    GoLuaStudy.rar

    解析器负责将Lua源代码转换成中间表示(通常称为字节码,Bytecode),执行器则负责读取并解释这些字节码,执行相应的操作。 1. **解析器**:在GoLua中,解析器会将输入的Lua源码解析成抽象语法树(AST,Abstract ...

Global site tag (gtag.js) - Google Analytics