2012-03-20 141 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