Lua的Tostring()在C?

Nic*_* M. 5 lua

有一个等效于tostring()的Lua API函数,还是我必须在我的C代码中执行以下操作?

lua_getglobal(L, "tostring");
// ... push value to convert, and:
lua_call(L, 1, 1);
Run Code Online (Sandbox Code Playgroud)

长篇故事:

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

Sea*_*ull 4

使用luaL_tolstring

来自参考:

[-0, +1, e]

const char *luaL_tolstring (lua_State *L, int idx, size_t *len);
Run Code Online (Sandbox Code Playgroud)

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

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

  • @WB您将`lua_tolstring`与`luaL_tolstring`混淆了。 (3认同)