2010-10-24 34 views
0

基本上我正在使用fstream读取文件的内容,然后将其转换为const char *类型。我向Lua提供这个,而Lua会用这个做一些事情。但是这不起作用。变量不等价fstream与声明

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

你已经给出了可用的东西的代码片段;你能否给出一个没有的东西的片段? – 2010-10-24 21:59:28

+0

当您只发布可以工作的位时,帮助您处理不工作的位有点困难。 – 2010-10-24 21:59:32

+0

这是你的代码。 – Q2Ftb3k 2010-10-24 22:00:48

回答

0

你没有设置全局你推前值?无论如何,这是什么,卡莫:P

1

要诊断这一点,你可能想知道更多关于什么Lua的想法。相反,我会写Lua方面为assert(loadstring(s))()。如果loadstring失败,则您最新的代码最多会打印来自尝试拨打nil的错误。在序列中的assert()中,对nil的调用将被有关出错的更多信息错误所取代。