2010-10-24 69 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的調用將被有關出錯的更多信息錯誤所取代。