如何在 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
../ 将您带到当前代码目录的父目录,在本例的假设下是项目。
我现在正在编写测试用例,并且创建了一些我尝试阅读的测试文件。绝对路径为:
/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
../ 将您带到当前代码目录的父目录,在本例的假设下是项目。