我如何将两个Lua luaL_Buffer对象连接起来?

使用 Lua C-API,有没有一种有效的方法来连接两个 LuaL_Buffer? 我不想进行任何不必要的 memcopys 并且希望结果由 luaL_pushresult() 消耗。这些缓冲区包含嵌入的零值,因此我不能将它们转换为 char 数组并使用 luaL_addstring()。可以修改任一缓冲区。

点赞
用户549472
用户549472

在 C 级别创建整个字符串,然后使用 luaL_addlstring 函数,这样空字符就可以被安全地添加到缓冲区中。

2012-07-08 02:27:13
用户501459
用户501459

你可以先将 buf2 推入堆栈中,将其加入到 buf1 中(该操作将弹出 buf2),然后再将 buf1 推入堆栈中。

luaL_pushresult(L, &buf2); // 将 "b\0" 推入堆栈
luaL_addvalue(&buf1); // 将该字符串弹出并加入到 buf1 中
luaL_pushresult(L, &buf1); // 将 "a\0b\0" 推入堆栈
2012-07-08 02:28:43