Переменные не эквивалентны fstream или декларация - PullRequest
0 голосов
/ 25 октября 2010

В основном я читаю содержимое файла, используя fstream, затем преобразую его в тип const char *. Я поставляю это Луа, и Луа что-то с этим сделает. Это, однако, не работает. Что работает, если я делаю:

const char* data = "print('Hello world')";
luaL_pushstring(L, data);
luaL_setglobal(L, "z");

Они оба относятся к типу const char * type и представляют собой одну и ту же строку (например, я сравнил две длины). За исключением одного работает, а другой. Я сбит с толку. Любая помощь здесь? Вот код:

   std::string line,text;
   std::ifstream in("test.txt");
   while(std::getline(in, line))
   {
       text += line;
   }
   const char* data = text.c_str();
   luaL_pushstring(L, data);
   luaL_setglobal(L, "z");

Вот код Lua:

loadstring(z)()

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Чтобы диагностировать это, вы, вероятно, хотите узнать больше о том, что подумала Луа. Вместо этого я бы написал сторону Lua как assert(loadstring(s))(). Если loadstring не удается, ваш текущий код в лучшем случае печатает ошибку от попытки вызвать nil. С assert() в последовательности вызов nil будет заменен более информативной ошибкой о том, что пошло не так.

0 голосов
/ 25 октября 2010

Разве вам не нужно устанавливать глобальное значение, прежде чем нажимать значение?В любом случае, как дела, Камой: P

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