函数成功返回,我可以使用表中的值,但出现错误“调试断言失败”,这就结束了。我知道 assert 的问题出在 for 循环中,但不完全知道如何解决。提前致谢。
static int l_xmlNodeGetValues(lua_State *L)
{
int iDocID = luaL_checkint(L, 1);
const char *pszNodeName = luaL_checkstring(L, 2);
CConfig *file = docs.at(iDocID);
int i = 1;
lua_newtable(L);
for( TiXmlElement *e = file->GetRootElement()->FirstChildElement(pszNodeName);
e; e = e->NextSiblingElement(pszNodeName) )
{
lua_pushstring(L, e->GetText());
lua_rawseti(L,-2,i);
i++;
}
return 1;
}
编辑:当我设置 int i; 在 0 上它可以工作,但忘记了最后一个元素。如果 i == 1 为什么不这样做?
当lua_rawseti(L,-2,i);出现断言失败时 我== 1
由于没有解决我的问题的解决方案,我将尝试描述它的作用以及这两种情况下的输出。我只是想从 xml 文件中的指定节点获取所有值:
<root>
<node>A</node>
<node>B</node>
<node>C</node>
<node>D</node>
</root>
脚本如下所示:
xmlfile = xmlOpenFile( "myfile.xml", "root" );
if ( xmlfile ) then
for _, v in ipairs( xmlNodeGetValues( xmlfile, "node" ) ) do
print( v );
end
end
问题:
诠释 i = 1;
输出:
A B C D !!!调试断言失败!!!
-------------------------------------------------- ----
诠释 i = 0;
输出:
B C D 没有错误...