【问题标题】:std::fstream read file on Windows C++std::fstream 在 Windows C++ 上读取文件
【发布时间】:2012-04-04 18:32:18
【问题描述】:

我正在尝试将一些在 Linux 上运行良好的代码移植到 Win32。我已经检查了当前的工作目录,并且程序正在与文件相同的目录中工作。但是,由于某种原因,它无法读取它。这是进行读取的功能。我只是将“filename.txt”传递给它:

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

有任何解决此问题的提示吗?

非常感谢。

【问题讨论】:

  • 您正在返回一个指向本地数据的指针。当函数返回时,shader 及其所有数据都将失效。

标签: c++ file winapi io


【解决方案1】:

您正在返回一个本地分配的字符串缓冲区,该缓冲区会在函数退出时丢失。 在内部静态分配缓冲区或(更好)返回字符串。

【讨论】:

  • 这个:也修复你的linux版本,它可能有效但它是错误的。 return buffer.str() 会很好用,或者如果您需要该 char 数组返回一个向量.
最近更新 更多