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

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

本文关键字:相对 路径 文件 C++      更新时间:2023-10-16

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

/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()函数返回 fulse。

你可以帮我吗?

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

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

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

/source/Project/

components/Project/test/file.dat

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

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

./test/file.dat

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

../测试/文件.dat

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