如何在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()
函数返回 fulse。
你可以帮我吗?
您正在使用的根本不是相对路径。当然,您使用的是相对路径语法,而不是它的实际含义。
/../../../../../../source/Project/components/Project/test/file.dat
这条路径以/开头,这意味着 root 然后找到它的父级,再次返回 root,因为根没有父级并继续......简化版本是:
/source/Project/components/Project/test/file.dat
因此,它将在根目录中查找当然不存在的文件夹源。
你应该做的是这样的(假设你的代码在项目文件夹中):
./test/file.dat
或者,如果它位于项目文件夹中的其他文件夹中,您可以执行以下操作:
../测试/文件.dat
../将您带到当前代码目录的父级,在本例中,该目录的假设是项目。
相关文章:
- Windows 和 Linux 之间的相对路径分辨率差异?
- 如何获取 CMake 单元测试的相对路径?
- 从另一个应用启动我的应用时出现相对路径更改问题
- CMake 链接 2 个具有相对路径的库
- cmake find_package CMakeLists.txt 子文件夹中的相对路径
- 在可执行文件中使用带有符号链接的相对路径
- C++流找不到相对路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++包括断开的相对路径
- CMake 安装具有相对路径的目标
- CMake为什么通过相对路径链接外部库
- Boost Filesystem flowly_caronical不会在没有父文件夹的情况下解决相对路径
- 如何将共享库与具有相对路径的 CMake 链接
- 相对路径中的错误
- C 能够以其完整路径打开代码::块中的文件,但不能以相对路径作为命令行参数打开文件
- 如何在基于QT的Autodesk Maya插件中使用相对路径
- 如何使用QT程序中的默认应用程序打开使用相对路径的PDF
- Visual Studio单元使用具有相对路径的文件测试
- 在 Visual Studio 中为 SFML 设置相对路径
- 如何配置MSVC以使用__FILE__显示头文件的相对路径