变量不相等:fstream vs. 声明

基本上我正在使用 fstream 读取文件内容,然后将其转换为 const char* 类型。我将其提供给 Lua,并且 Lua 将对其执行某些操作。但是这不起作用。如果我这样做:

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

它们都是 const char* 类型,它们都是相同的字符串(例如,我比较了两个长度)。只是一个有效,而另一个无效。我感到困惑。这里有帮助吗?以下是代码:

   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)()

原文链接 https://stackoverflow.com/questions/4010668

点赞
stackoverflow用户419090
stackoverflow用户419090

不过,在推送值之前,你不必设置全局变量吗?不管怎样,Camoy,有什么事吗:P

2010-10-25 00:47:09
stackoverflow用户68204
stackoverflow用户68204

为了诊断这个问题,你可能想要了解更多关于 Lua 的想法。我会将 Lua 侧写成 assert(loadstring(s))()。如果 loadstring 失败,你当前的代码可能最多会打印一个来自试图调用 nil 的错误。通过在序列中添加 assert(),对 nil 的调用将被替换为更详细的错误信息,以了解出了什么问题。

2010-10-26 21:00:46