6、C++修改Lua中Table的内容
来源:互联网 发布:java long 类型长度 编辑:程序博客网 时间:2024/06/18 16:26
在C/C++中修改Table和读取Table差别不大。也是非常简单。还是直接上代码:
代码
WriteLuaTable.lua
luat_Test1={a=123, b=456, c=789}luat_Test2={123, 456, 789}
WriteLuaTable.cpp
#include <lua.hpp>static void WriteTableFromKey(lua_State *L, const char* lpszTableName, const char* lpszTableItem, int nVal){ lua_getglobal(L, lpszTableName); lua_pushnumber(L, nVal); lua_setfield(L, -2, lpszTableItem); lua_pop(L, 1);}static void WriteTableFromIndex(lua_State *L, const char* lpszTableName, int index, int nVal){ lua_getglobal(L, lpszTableName); lua_pushnumber(L, nVal); lua_rawseti(L, -2, index); lua_pop(L, 1);}static void ReadTableFromKey(lua_State *L, const char* lpszTableName, const char* lpszTableItem){ lua_getglobal(L, lpszTableName); lua_pushstring(L, lpszTableItem); lua_gettable(L, -2); printf("%s.%s=%d\n", lpszTableName, lpszTableItem, (int)lua_tonumber(L, -1)); lua_pop(L, 2);}static void ReadTableFromIndex(lua_State *L, const char* lpszTableName, int index){ lua_getglobal(L, lpszTableName); lua_rawgeti(L, -1, index); printf("%s[%d]=%d\n", lpszTableName, index, (int)lua_tonumber(L, -1)); lua_pop(L, 2);}int main (int argc, char* argv[]){ lua_State *L = lua_open(); luaopen_base(L); luaL_dofile(L, "WriteLuaTable.lua"); ReadTableFromKey(L, "luat_Test1", "a"); ReadTableFromKey(L, "luat_Test1", "b"); ReadTableFromKey(L, "luat_Test1", "c"); puts("\n"); WriteTableFromKey(L, "luat_Test1", "a", 147); // luat_Test1['a'] = 147 WriteTableFromKey(L, "luat_Test1", "b", 258); // luat_Test1['b'] = 258 WriteTableFromKey(L, "luat_Test1", "c", 369); // luat_Test1['c'] = 369 WriteTableFromKey(L, "luat_Test1", "d", 159); // luat_Test1['d'] = 159 ReadTableFromKey(L, "luat_Test1", "a"); ReadTableFromKey(L, "luat_Test1", "b"); ReadTableFromKey(L, "luat_Test1", "c"); ReadTableFromKey(L, "luat_Test1", "d"); puts("\n--------------------------"); ReadTableFromIndex(L, "luat_Test2", 1); ReadTableFromIndex(L, "luat_Test2", 2); ReadTableFromIndex(L, "luat_Test2", 3); puts("\n"); WriteTableFromIndex(L, "luat_Test2", 1, 147); // luat_Test2[1] = 147 WriteTableFromIndex(L, "luat_Test2", 2, 258); // luat_Test2[2] = 258 WriteTableFromIndex(L, "luat_Test2", 3, 369); // luat_Test2[3] = 369 WriteTableFromIndex(L, "luat_Test2", 4, 159); // luat_Test2[4] = 159 ReadTableFromIndex(L, "luat_Test2", 1); ReadTableFromIndex(L, "luat_Test2", 2); ReadTableFromIndex(L, "luat_Test2", 3); ReadTableFromIndex(L, "luat_Test2", 4); lua_close(L); return 0;}
makefile
CPPFLAG=`pkg-config --cflags lua5.1`LDFLAG=`pkg-config --libs lua5.1`CC=g++all: WriteLuaTableWriteLuaTable : WriteLuaTable.cpp $(CC) -o $@ $(CPPFLAG) $(LDFLAG) $<
测试环境
运行结果
阅读全文
0 0
- 6、C++修改Lua中Table的内容
- lua与c++的相互调用、C/C++修改Lua中Table的内容
- 修改table中单元格的内容
- c遍历lua中table的方法
- 5、C++读取Lua中Table的内容
- C遍历lua的table
- lua递归输出表table的内容
- 【Lua】浅析Lua中table的遍历
- 【Lua】浅析Lua中table的遍历
- Lua中table的copy
- lua中table的使用
- Lua中table的遍历
- Lua中table的删除
- Lua中table的使用
- C/C++ 中遍历 Lua table 完整版
- C/C++ 中遍历 Lua table 完整版
- Lua教程(三):C语言、C++中调用Lua的Table示例
- Lua教程(三):C语言、C++中调用Lua的Table示例
- JQuery.Ajax()的data参数类型(转载)
- ES6 自定义迭代器
- dna reverse
- OnClick注册事件传递参数
- RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
- 6、C++修改Lua中Table的内容
- C++中访问控制与继承
- iOS
- Android设计模式-策略模式(Strategy Pattern)
- Hive部署安装
- 算法练习(13):Regular Expression Matching
- 多线程编程基础02
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- 7、C++处理Lua中的存在嵌套(循环)的Table