带有C++; 是否可以通过C++返回一个函数返回字符串? -编辑- 好的,这个代码不起作用。有什么帮助吗 int flua_getinput(lua_State *L){ if(lua_isstring(L,1)){ cout << lua_tostring(L,1); cin >> input; cout << "\n"; lua_pushstring(L,input); }else{ cin >> input; cout << "\n"; lua_pushstring(L,input); } return 1; } Registering Function: lua_register(L,"getinput",flua_getinput); int flua\u getinput(lua\u State*L){ if(lua_-isstring(L,1)){ cout>输入; cout>输入; 您是否签出了?
您签出了吗?显示如何从中获取字符*。显示如何从中获取字符*。最简单的方法是使用luabind。它自动检测并处理std::string,这样您就可以简单地使用std::string f()之类的函数并将其绑定到lua,当lua脚本调用它时,它将自动转换为本机lua字符串。最简单的方法是使用luabind。它自动检测并处理std::string,这样您就可以简单地使用std::string f()之类的函数并将其绑定到lua,当lua脚本调用它时,它将自动转换为本机lua字符串。如果出现错误,请尝试调用全局“getinput”(一个nil值)那么问题是没有命中lua_寄存器调用。必须通过调用注册函数加载带有C++; 是否可以通过C++返回一个函数返回字符串? -编辑- 好的,这个代码不起作用。有什么帮助吗 int flua_getinput(lua_State *L){ if(lua_isstring(L,1)){ cout << lua_tostring(L,1); cin >> input; cout << "\n"; lua_pushstring(L,input); }else{ cin >> input; cout << "\n"; lua_pushstring(L,input); } return 1; } Registering Function: lua_register(L,"getinput",flua_getinput); int flua\u getinput(lua\u State*L){ if(lua_-isstring(L,1)){ cout>输入; cout>输入; 您是否签出了?,c++,string,function,lua,C++,String,Function,Lua,您签出了吗?显示如何从中获取字符*。显示如何从中获取字符*。最简单的方法是使用luabind。它自动检测并处理std::string,这样您就可以简单地使用std::string f()之类的函数并将其绑定到lua,当lua脚本调用它时,它将自动转换为本机lua字符串。最简单的方法是使用luabind。它自动检测并处理std::string,这样您就可以简单地使用std::string f()之类的函数并将其绑定到lua,当lua脚本调用它时,它将自动转换为本机lua字符串。如果出现错误,请尝试
getinput
函数,或者如果函数在库中,则使用require
。如果出现错误尝试调用全局“getinput”(一个nil值)
那么问题是没有命中lua_register调用。必须通过调用注册函数或使用require
加载函数(如果它在库中)。是否尝试这样做
int lua_input(lua_State* L) {
string input;
cin >> input;
lua_pushstring(L, input.c_str());
return 1;
}
int main() {
lua_State* L=lua_open();
luaL_openlibs(L);
lua_register(L,"input",lua_input);
luaL_loadstring(L, "for i=1,4 do print('you typed '..input()); end");
lua_pcall(L, 0, 0, 0);
}
你想做这样的事吗
int lua_input(lua_State* L) {
string input;
cin >> input;
lua_pushstring(L, input.c_str());
return 1;
}
int main() {
lua_State* L=lua_open();
luaL_openlibs(L);
lua_register(L,"input",lua_input);
luaL_loadstring(L, "for i=1,4 do print('you typed '..input()); end");
lua_pcall(L, 0, 0, 0);
}
是的,这是可能的。如果你想要更多的答案,你必须提供更多的上下文:你尝试了什么,为什么它看起来不起作用?我不能仅仅举一个如何做的例子。我只是想学习C++和Lua。我不知道从什么开始。LuaCalp:Lua:[String ] init。Lua ]:尝试调用Global“GETinPin”。是的,这是可能的。如果你想要更多的答案,你必须提供更多的上下文:你尝试了什么,为什么它看起来不起作用?我不能仅仅举一个如何做的例子。我只是想学习C++和Lua。我不知道从什么开始。Lua错误:Lua: [String ] init。Lua“”:1:尝试调用全局“getinput”(一个nil值)+1我认为OP需要完整的代码。对于OP:如果你这样做,你还必须始终检查每个对loadstring或pcall的调用。并在结尾使用lua_close。@kaizer-你是对的。我只是想让它尽可能简单。+1我认为OP需要完整的代码。对于OP:如果你这样做,你还必须始终检查每个对lo的调用adstring或pcall。最后使用lua_close。@kaizer-你是对的。我只是想让它尽可能简单。