C++ 如何在C+;中打开具有相对路径的文件+;?
我现在正在编写测试用例,并且我创建了一些测试文件,我试图读取这些文件。绝对路径为:C++ 如何在C+;中打开具有相对路径的文件+;?,c++,relative-path,ifstream,absolute-path,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/compone
/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.is\u open()
函数返回fulse
你能帮我吗?你所使用的根本不是一条相对路径。确定您使用的是相对路径语法,但不是它的实际含义 /../../../../../source/Project/components/Project/test/file.dat 此路径以/开头,这意味着root将找到它的父级,该父级将再次返回root,因为root没有父级并继续。。。简化版本如下: /source/Project/components/Project/test/file.dat 因此,它将在根目录中查找文件夹源,而根目录当然不存在 您应该这样做(假设您的代码位于项目文件夹中): ./test/file.dat 或者,如果它位于Project文件夹中的其他文件夹中,则可以执行以下操作: ../test/file.dat
../将您带到当前代码目录的父目录,在本例中假定该目录为Project。您的程序的当前工作目录是什么?您提供的路径必须相对于CWD。另外,由于路径以
/
开始,这意味着从根开始,并且由于根目录没有父目录,这意味着/..
与/
相同,导致路径等于/source/Project/components/Project/test/file.dat
,这一切都取决于当前的工作目录。i、 你的“相对”路径不是相对的。它应该以点而不是斜线开始。e、 g./../../../../../../../../../../source/Project/components/Project/test/file.dat谢谢大家,你们帮了很多忙!