我无法在构建中使用 ifstream 读取文件,但可以在 IDE 中读取它

I can't read a file with ifstream in a build, but can read it in an IDE

当我 运行 Eclipse 中的一个程序应该读取文件并将其内容输出到控制台时,它读取并输出它没有任何问题,但是当我构建它并且 运行 它在 IDE 之外它不会读取它。

这是读取文件的代码:

Map::Map(std::string file, SE_Graphics *graphics) {
    std::ifstream input(file);

    if (input.is_open()) {
        std::string line;
        while (std::getline(input, line)) {
            std::cout << line << std::flush;
        }
        input.close();
    } else {
        std::cout << "File is missing" << std::flush;
    }
}

这就是我调用方法的方式:

Map map("salsaboy/maps/test.sem", se.getGraphics());

这是文件夹结构:

Lab (the build)
src
salsaboy
|-tiles
|-maps
  |-test.sem

每次我 运行 它在 IDE 之外它只是说 File is missing,即使我试图写入那个文件 input.is_open() 也是不正确的。

我能看到的唯一方法是从可执行文件的目录中获取整个文件路径,删除文件,然后用我想要的文件路径替换它。