现在的位置: 首页 > 综合 > 正文

遍历和读取LUA文件中表的元素Demo

2014年02月20日 ⁄ 综合 ⁄ 共 1071字 ⁄ 字号 评论关闭

至于LUA环境配置什么的前面的文章已经讲得很详细了此处不再赘述害羞废话少说直接进入正题.

一、先说在C++中的情况:先来看下我们要读取的这个LUA文件A.LUA的内容如下:

TT={1,2,3,4,5,6,7,8,9}
SS={A="THIS IS A STRING FROM LUA TABLE",B="TEST"}

然后我们的C++中的代码看起来是酱紫的.PS:等你熟悉后你可以随心所欲的写,我这只是一个简单的示例.

int main(int argc, char* argv[])
{ 
 lua_State* L;  
 L = luaL_newstate();  
 luaL_openlibs(L);  
  if (luaL_dofile(L,"A.lua") != 0)  
   std::cout<<"LOAD LUA FILE ERROR"<<std::endl;  
  int nTop = lua_gettop(L);
  lua_getglobal(L,"TT");//TT入栈
  size_t i = 1 ;
  while (i<=lua_rawlen(L,-1))//获取TT的长度
  {
   lua_rawgeti(L,-1,i++);//获取TT中第i个元素的值
   std::cout<<" "<<lua_tointeger(L,-1); 
   lua_pop(L,1);
  }
  lua_getglobal(L,"SS");//SS入栈
  lua_getfield(L,-1,"A");//SS[A]="THIS IS A STRING FROM LUA TABLE"
  std::cout<<" "<<lua_tostring(L,-1)<<std::endl; 
  lua_settop(L,nTop);
  return 0;
}

二、然后我们来看下在LUA脚本中的情况.代码如下:

t1 = {a=10, b=20, c = 30};t1.m = 100;t1.n = 101
for k, v in pairs(t1) do
  print(k, v)
end
print("********************************")
t = {10, 20, 30,40,50,60,70}
for k, v in pairs(t) do
  print(k, v)
end

好了,今天的内容很简单,自己动手写一遍就什么都明白了,我也就不多说什么了.拜拜大笑

本人郑重声明如下 一、本文来自CSDN博客,传送门:http://BlOG.CSDN.NET/yirancpp 二、All Rights Reserved. 任何个人或网站转载本文时不得移除本声明. 三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.

抱歉!评论已关闭.