【发布时间】:2016-06-24 21:53:49
【问题描述】:
我现在正在编写测试用例,并创建了一些我尝试阅读的测试文件。绝对路径是:
/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。
你能帮帮我吗?
【问题讨论】:
-
你程序的当前工作目录是什么?您提供的路径必须与 CWD 相关。此外,由于您以
/开始路径,这意味着您从在根目录 开始,并且由于根目录没有父目录,这意味着/..与/相同,领先到你的路径等于/source/Project/components/Project/test/file.dat -
这一切都取决于当前的工作目录。即您的程序所在的位置。
-
您的“相对”路径不是相对的。它应该以点而不是斜线开头。例如 ./../../../../../../source/Project/components/Project/test/file.dat
-
谢谢大家,你们帮了大忙!
标签: c++ relative-path ifstream absolute-path