2012-03-20 107 views
1

我想將一些在Linux上運行良好的代碼移植到Win32。我檢查了當前的工作目錄,並且程序與文件在同一個目錄中工作。但是,由於某種原因,它無法讀取它。這是閱讀的功能。我只是通過「filename.txt」它:std :: fstream在Windows上讀取文件C++

inline const GLchar* readTextFile(const char* filename) { 
std::fstream shaderFile(filename,std::ios::in); 
std::string shader; 

std::stringstream buffer; 
buffer << shaderFile.rdbuf(); 
shader = buffer.str(); 

return shader.c_str(); 
} 

有關解決此問題的任何提示?

非常感謝提前。

+4

您正在返回一個指向本地數據的指針。當函數返回時,「着色器」及其所有數據都變爲無效。 – 2012-03-20 09:39:49

回答

4

您正在返回一個本地分配的字符串緩衝區,該函數在函數退出時會丟失。 在內部靜態分配緩衝區或(更好)返回字符串。

+1

這:也解決你的linux版本,它可能工作,但它是錯誤的。 'return buffer.str()'可以很好地工作,或者如果你需要這個char數組返回一個向量。 – 111111 2012-03-20 11:46:07

+0

謝謝大家!返回字符串像魅力一樣工作。 – Jubei 2012-03-21 06:08:34