【发布时间】:2017-04-20 13:28:00
【问题描述】:
我正在用 C++ 创建一个游戏引擎,并且我已经开始添加对加载文件的支持。我创建了一个如下所示的加载文件方法:
#include <string>
#include <fstream>
std::string read_file(const char* filepath) {
FILE* file = fopen(filepath, "rt");
if(file != NULL) {
fseek(file, 0, SEEK_END);
} else {
std::string error_message = std::string("[ERROR]: Failed to load file ");
error_message.append(filepath);
return error_message;
}
unsigned long length = ftell(file);
char* data = new char[length + 1];
memset(data, 0, length + 1);
fseek(file, 0, SEEK_SET);
fread(data, 1, length, file);
fclose(file);
std::string result(data);
delete[] data;
return result;
}
为了测试这个功能,我决定尝试加载一个“test.txt”文件,但除非我包含完整路径,否则这将不起作用,例如
"/Users/(Username)/.../(Executable Directory)/text.txt"
而不仅仅是
"test.txt"
所以,为了解决这个问题,我需要一种方法来获取可执行文件所在目录的完整路径,然后将文件名附加到路径的末尾,然后在我的加载文件方法中加载它。
有人知道如何获取路径吗?
【问题讨论】:
标签: c++ macos path executable