Lua在C中的tostring()?

时间:2014-03-23 15:35:58

标签: lua

是否存在与tostring()等效的Lua API函数,或者我是否必须在C代码中执行以下操作?

lua_getglobal(L, "tostring");
// ... push value to convert, and:
lua_call(L, 1, 1);

长篇故事:

我正在C中编写一个alert(message)函数(可以从Lua调用),它会向用户显示一条消息。但是如果message不是一个字符串(例如,布尔值或零),我想将它转换为理智的东西。有一个Lua函数可以做到这一点tostring(),但我想知道Lua的C API是否提供了“直接”的方法来实现这一点。

1 个答案:

答案 0 :(得分:3)

使用luaL_tolstring

参考文献:

  

[ - 0,+ 1,e]

const char *luaL_tolstring (lua_State *L, int idx, size_t *len);
     

将给定索引处的任何Lua值转换为合理格式的C字符串。生成的字符串被压入堆栈并由函数返回。如果len不是NULL,则该函数还会将*len设置为字符串长度。

     

如果值具有带有“__tostring”字段的元表,则luaL_tolstring将使用值作为参数调用相应的元方法,并使用调用的结果作为结果。