C++中使用fstream相对路径的问题

5
我尝试使用fstream加载文件。 代码如下:
file.open("../levels/level0.lvl");
if (file.is_open()) {
    while (!file.eof()) {
        std::getline(file, Str);
        list = ReadLine(Str, list);
    }
}

但它没有加载任何内容。是的,只有当路径是绝对路径时才能加载。如何使路径变为相对路径?

文件夹“levels”托管在debug文件夹中。与exe文件在同一文件夹中。


2
你的相对路径是有效的。你可能把活动目录可执行文件的目录混淆了吗? - Drew Dormann
你是对的。谢谢并为这个愚蠢的错误道歉。 - SaschaDeWaal
3
@Beatnory while (!file.eof()) 你还应该注意:为什么在循环条件中使用iostream::eof被认为是错误的?(链接为英文原文)。 - πάντα ῥεῖ
2个回答

8

"levels"文件夹保存在debug文件夹中,与exe文件位于同一文件夹中。

无论levels文件夹相对于可执行文件的路径处于什么位置,都没有关系。
确定相对路径的相关文件夹是实际启动可执行文件的工作目录。


参见这里:fstream doesn't resolve path


虽然看起来这两个不是一样的吗?可执行文件从哪开始,文件夹从哪里开始? - Zap

0

路径处理是与操作系统相关的。正确的处理方法是添加一种用户指定应用程序路径的方式,然后使用该路径。例如,您可以添加一个命令行选项--level-file=<path>,然后您的程序可以从该选项中读取路径并将其传递给fstream构造函数。

更多信息,请参见我对这个问题的回答:https://dev59.com/RWkw5IYBdhLWcg3wp8Sc#40980510


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接