如何在 C++ 中打开具有相对路径的文件?

How to open a file with relative path in C++?

我现在正在编写测试用例,并且创建了一些我尝试阅读的测试文件。绝对路径为:

/home/user/code/Project/source/Project/components/Project/test/file.dat

但是由于显而易见的原因,使用绝对路径进行测试是不好的。所以我尝试将绝对路径转换为相对路径,但我不知道为什么它不起作用。我用相对路径

创建了一个文件
findme.dat

我在

中找到了它
/home/user/code/Project/build/source/Project/components/Project/test/findme.dat

所以我创建了相对路径

/../../../../../../source/Project/components/Project/test/file.dat

但文件未打开且未与 is 对象相关联, std::ifstream is (path);,以及 is.is_open() 函数 returns fulse.

你能帮帮我吗?

您使用的根本不是相对路径。当然你使用的是相对路径语法,而不是它的实际含义。

/../../../../../../source/Project/components/Project/test/file.dat

此路径以 / 开头,这意味着 root 然后找到它的父级 return 再次成为 root,因为 root 没有父级并继续...简化版本是:

/source/Project/components/Project/test/file.dat

因此它会在根目录中查找当然不存在的文件夹源。

你应该做的是这样的(假设你的代码在项目文件夹中):

./test/file.dat

或者如果它位于 Project 文件夹中的某个其他文件夹中,您可以执行如下操作:

../test/file.dat

../ 将您带到当前代码目录的父目录,在本例的假设下是项目。