码迷,mamicode.com
首页 > 编程语言 > 详细

Lua table转C++数组

时间:2014-07-29 15:07:48      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   for   代码   ar   c++   python   

    为了方便,这里数组用vector表示。

    C++层代码如下:

static int LuaTable2Vector(lua_State *luaState)
{
	int count = luaL_getn(luaState, 1);
	std::vector<std::string> vecNameList;

	for (int i = 0; i < count; i++)
	{
		lua_rawgeti(luaState, 1, i+1);
		const char *strName = lua_tostring(luaState, -1);
		vecNameList.push_back(strName);

		lua_pop(luaState,1);
	}

	std::vector<std::string>::iterator it;
	for (it = vecNameList.begin(); it != vecNameList.end(); it++)
	{
		cout << (*it).data() << endl;
	}

	return 0;
}
简单解释一下上面的程序,lua_rawgeti(lua_state *L, int index, int key)涉及到两个索引,index表示table在栈中的位置,key表示元素在table中的位置。其等价操作为: 
ele = Stack[index]
value = ele[key]
Stack.push(value)

栈+1, 栈顶新增元素就是value。正因为增加了栈顶元素,所以后面可以利用lua_tostring(luaState, -1)取到值,并且最后需要调用lua_pop(luaState,1)将元素弹出栈。



    lua层调用代码很简单,就两行:

local nameTable = {"zhangsan", "lisi", "wangwu", "liubei", "guanyu"}
LuaTable2Vector(nameTable)





Lua table转C++数组,布布扣,bubuko.com

Lua table转C++数组

标签:style   color   os   for   代码   ar   c++   python   

原文地址:http://blog.csdn.net/wang_lichun/article/details/38231627

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!