如何解析Lua中的table数据 20

最近在学习Lua脚本语言,基本的语法也都学了。但是在解析Lua脚本中的table数据时遇到了困难,请问各位:假设有Lua脚本如下localProject={};Proje... 最近在学习Lua脚本语言,基本的语法也都学了。
但是在解析Lua脚本中的table数据时遇到了困难,
请问各位:
假设有Lua脚本如下
local Project={};
Project.A={
one="helen",
...
...
}
Project.B={
....
}

1.请问如果我要在C语言中调用该Lua脚本,想要把Lua中的one这个数据解析出来,
该如何操作。具体调用哪些API。
注:解析Lua的全局变量和调用Lua函数并传递参数以及接收Lua函数的返回值这些我都
已经成功做到。只是这个table数据的解析我现在感到很难。

请给位大虾解答一下。谢谢。
展开
 我来答
w2moon
2011-12-13 · TA获得超过409个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:268万
展开全部
调用 GetLuaVar(luastate,"Project.A.one") 把Project.A.one的值取到堆栈上,
然后根据类型自己用 lua_tonumber(luastate, -1) 或 lua_tostring(luastate, -1)得数据

void GetLuaVar(lua_State* pLuaState,const char* strVarName)
{
const char* pIndS = strVarName;
const char* pIndE = strVarName;
T_B8 bParts = false;//判断是否分两部分,因为第一部分要用lua_getglobal,其他部分用lua_gettable
while( 0 != *pIndE )
{
if( '.' == *pIndE )
{
if(bParts)
{
lua_pushstring(pLuaState,std::string(pIndS,pIndE - pIndS).c_str());
lua_gettable(pLuaState,-2);
lua_remove(pLuaState,-2);
}
else
{
lua_getglobal(pLuaState,std::string(pIndS,pIndE - pIndS).c_str());
bParts = true;
}
++pIndE;
pIndS = pIndE;
}
else
{
++pIndE;
}
}
if(bParts)
{
lua_pushstring(pLuaState,std::string(pIndS,pIndE - pIndS).c_str());
lua_gettable(pLuaState,-2);
lua_remove(pLuaState,-2);
}
else
{
lua_getglobal(pLuaState,std::string(pIndS,pIndE - pIndS).c_str());
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式