C++代码:

// LuaAndC.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <string.h>
using namespace std; extern "C"
{
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
} int _tmain(int argc, _TCHAR* argv[])
{
//1.创建一个state
lua_State *L = luaL_newstate(); luaL_openlibs(L);
luaL_dofile(L,"Hello.lua"); //获取table的值
lua_getglobal(L,"str"); //会将get的对应项压到栈顶
lua_getfield(L,1,"name");
lua_getfield(L,1,"age"); if(lua_isstring(L,2))
{
cout<<"name= "<<lua_tostring(L,-2)<<endl;
}
if(lua_isnumber(L,3))
{
cout<<"age= "<<lua_tonumber(L,-1)<<endl;
}
lua_pop(L,2); //修改table的项
lua_pushfstring(L,"So so");//改完弹出
lua_setfield(L,1,"name");
lua_getfield(L,1,"name");
if(lua_isstring(L,2))
{
cout<<"name1= "<<lua_tostring(L,2)<<endl;
}
lua_pop(L,2); //新建table
lua_newtable(L); //压栈
lua_pushnumber(L,11);
lua_pushstring(L,"New");
lua_setfield(L,1,"name");
lua_setfield(L,1,"age");
lua_getfield(L,1,"name");
lua_getfield(L,1,"age");
if(lua_isstring(L,2))
{
cout<<"name= "<<lua_tostring(L,2)<<endl;
}
if(lua_isnumber(L,3))
{
cout<<"age= "<<lua_tonumber(L,3)<<endl;
} lua_pop(L,3); //关闭state
lua_close(L); int i;
cin>>i;
return 0 ;
}

Lua代码:

str={name="Hunter",age=18}

C++对Lua中table进行读取、修改和创建的更多相关文章

  1. lua中 table 元表中元方法的重构实现

    转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...

  2. lua中 table 重构index/pairs元方法优化table内存占用

    转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...

  3. lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?

    lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...

  4. Lua中Table的学习

    --table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组.字典等 --Lua也是通过table来解决模块(module).包(package)和对象(Object)的. 例 ...

  5. Lua中table的实现-《Lua设计与实现》

    本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈   Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...

  6. lua中table的遍历,以及删除

    Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipair ...

  7. lua中table如何安全移除元素

    在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...

  8. lua中table的常用方法

    转载:https://blog.csdn.net/Fenglele_Fans/article/details/83627021 1:table.sort() language = {"lua ...

  9. element-ui中 table表格hover 修改背景色

    增加样式级别就行啦   .el-table--enable-row-hover .el-table__body tr:hover>td{ background-color: #212e3e !i ...

随机推荐

  1. EditText实现输入限制和校验

    EditText实现输入限制和校验 一.方法 1)输入限制 1.通过android:digits限制只能输入小写abc android:digits="abc" 2.通过andro ...

  2. 解决socket负载均衡集群方案和代码实现

    有一段时间,在考虑下socket 之间集群 可以在Nginx 下可以 但是不同服务器之间怎么通讯呢 后来自己也想可不可以用什么东西或者中间件来通讯 ,后来在百度之下 发现果然就是按照我所想的 ,在网上 ...

  3. visual stdio 2012 c#学习笔记1

    visual stdio 2012 c#学习笔记1 1 我在安装过程中选择的是英文版本,不过刚入手,所以想先从中文菜单入手,所以需要安装中文语言包: microsoft的中文语言包下载地址为:http ...

  4. 通过Linux命令搭建测试环境里面的jdk

    一.文件准备 1.1 文件名称 jdk-8u121-linux-x64.tar.gz 1.2 下载地址 http://www.oracle.com/technetwork/java/javase/do ...

  5. OSI七层模型及应用

    应用层:提供访问网络服务的接口.例如telnet. 表示层:提供数据格式转化服务.例如压缩和解压缩. 会话层:提供回话实体的连接服务,进行访问验证和会话管理.例如服务器验证用户登录和断点续传. 传输层 ...

  6. 2017.11.17 Demo-stm8+temperature timeing control

    1Find the lab and add in project. Downtown  it from ST  official website..compile it to ensure it pa ...

  7. 【python】使用asyncore进行异步通信

    参考博文:http://blog.csdn.net/livefun/article/details/8721772 参考博文:https://www.cnblogs.com/tomato0906/ar ...

  8. 内存管理(1)-buddy和slub算法

    Linux内存管理是一个很复杂的系统,也是linux的精髓之一,网络上讲解这方面的文档也很多,我把这段时间学习内存管理方面的知识记录在这里,涉及的代码太多,也没有太多仔细的去看代码,深入解算法,这篇文 ...

  9. cannot be read or is not a valid ZIP file

    在eclipse下创建 maven 项目,运行 flowable 6.1.2 配置maven之后,下载相应的依赖库. 发现报错: Archive for required library: '/Use ...

  10. 单项选择RadioButton和多项选择CheckBox的使用

     在Android中,可以通过RadioButton和RadioGroup的组合来实现单项选择的效果.而多项选择则是通过CheckBox来实现的. 1.单项选择RadioButton 我们知道,一 ...