将lua中的值放入栈顶

//将表内的值或普通值放入栈顶
void popval(lua_State *L,string val)
{
	int pos=0,oldpos=0;

	if((pos=val.find('.',pos))!=string::npos)
	{
		string ptr(val,0,pos-oldpos);
		lua_getglobal(L, ptr.c_str());

		pos++;
		oldpos = pos;
	}
	else
	{
		lua_getglobal(L, val.c_str());
		return;
	}

	while((pos=val.find('.',pos))!=string::npos)
	{
		string ptr(val,oldpos,pos-oldpos);
		lua_pushstring(L,ptr.c_str());
		lua_gettable(L,-2);

		pos++;
		oldpos = pos;
	}
	string ptr(val,oldpos,val.size()-oldpos);
	lua_pushstring(L,ptr.c_str());
	lua_gettable(L,-2);
}

用法:

popval(L,"normal_num");
int nv = lua_tonumber(L,-1);
popval(L,"t.table_str");
string str = lua_tostring(L,-1);

其中测试用lua脚本:

normal_num = 152;
t = {table_str = "abctest"};


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值