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

时间:2016-03-10 07:16:53

标签: c++ relative-path ifstream absolute-path

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

/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。

你能帮助我吗?

1 个答案:

答案 0 :(得分:11)

你所使用的并不是一条相对的道路。当然你使用的是相对路径语法,但不是它的实际含义。

  

/../../../../../../源/项目/组件/项目/测试/ FILE.DAT

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

  

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

所以它会在root中查找当然不存在的文件夹源。

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

  

./测试/ FILE.DAT

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

  

../测试/ FILE.DAT

../带您到当前代码目录的父目录,在这种情况下,假设是Project。