Pet*_*111 6 c++ relative-path absolute-path ifstream
我现在正在编写测试用例,并创建了一些我尝试阅读的测试文件.绝对路径是:
/home/user/code/Project/source/Project/components/Project/test/file.dat
Run Code Online (Sandbox Code Playgroud)
但是出于明显的原因,用绝对路径进行测试是不好的.所以我尝试将绝对路径转换为相对路径,我不知道为什么它不起作用.我用相对路径创建了一个文件
findme.dat
Run Code Online (Sandbox Code Playgroud)
我找到了它
/home/user/code/Project/build/source/Project/components/Project/test/findme.dat
Run Code Online (Sandbox Code Playgroud)
所以我创建了相对路径
/../../../../../../source/Project/components/Project/test/file.dat
Run Code Online (Sandbox Code Playgroud)
但该文件未打开且与is对象
无关std::ifstream is (path);,并且该is.is_open()函数返回fulse.
你能帮助我吗?
Usa*_*far 11
你所使用的并不是一条相对的道路.当然你使用的是相对路径语法,但不是它的实际含义.
/../../../../../../source/Project/components/Project/test/file.dat
这个路径以/开头,这意味着root然后找到它再次返回root的父节点,因为root没有父节点并且继续...这个的简化版本是:
/source/Project/components/Project/test/file.dat
所以它会在root中查找当然不存在的文件夹源.
你应该做的是这样的(假设你的代码在项目文件夹中):
./test/file.dat
或者如果它在Project文件夹中的某个其他文件夹中,您可以执行以下操作:
../test/file.dat
../带你到你当前代码目录的父目录,在这种情况下假设是Project.
| 归档时间: |
|
| 查看次数: |
12613 次 |
| 最近记录: |