Функция Lua возвращает строку с C ++ - PullRequest
1 голос
/ 25 июня 2010

Можно ли добавить в Lua функцию через 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);

Ответы [ 5 ]

2 голосов
/ 25 июня 2010

Вы пытаетесь сделать что-то подобное?

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);
}
1 голос
/ 25 июня 2010

Эта страница показывает, как вы можете получить от нее символ *.

1 голос
/ 25 июня 2010
0 голосов
/ 25 июня 2010

Если вы получаете сообщение об ошибке attempt to call global 'getinput' (a nil value), то проблема в том, что вызов lua_register не вызывается.Функция getinput должна быть загружена путем вызова функции регистрации или с помощью require, если она находится в библиотеке.

0 голосов
/ 25 июня 2010

Самый простой способ - использовать luabind.Он автоматически обнаруживает и обрабатывает std :: string, поэтому вы можете просто взять функцию наподобие std :: string f () и связать ее с lua, и она автоматически преобразуется в собственную строку lua, когда скрипт lua вызывает ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...