我现在正在编写测试用例,并创建了一些我尝试阅读的测试文件。绝对路径是:
/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。
你能帮助我吗?
答案 0 :(得分:11)
你所使用的并不是一条相对的道路。当然你使用的是相对路径语法,但不是它的实际含义。
/../../../../../../源/项目/组件/项目/测试/ FILE.DAT
这个路径以/开头,这意味着root然后找到它再次返回root的父节点,因为root没有父节点并且继续...这个的简化版本是:
/source/Project/components/Project/test/file.dat
所以它会在root中查找当然不存在的文件夹源。
你应该做的是这样的(假设你的代码在项目文件夹中):
./测试/ FILE.DAT
或者如果它位于Project文件夹中的某个其他文件夹中,您可以执行以下操作:
../测试/ FILE.DAT
../带您到当前代码目录的父目录,在这种情况下,假设是Project。