将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"};


你可能感兴趣的:(String,脚本,测试,table,lua)