从其他目录访问.in文件

时间:2015-11-30 10:50:00

标签: c++

假设我将一个程序添加到依赖于文件名" test.in"的路径中。我用C ++编写了这个,所以我使用了ifstream fin(" test.in")而没有指定目录。现在,如果我从不同的目录运行该程序,程序是否能够访问该文件" test.in"?

1 个答案:

答案 0 :(得分:2)

首先,这与文件扩展名无关,文件扩展名只是作为文件名一部分给出的约定。

其次,您使用相对路径始终。即使您从“{1}}”的“同一目录”运行程序,也依赖于shell上下文的“工作目录”与可执行文件和文件所在的目录相同。

情况并非总是如此。

例如:

test.in

这没关系,因为你的shell位于~/myProject:# ls test.in program ~/myProject:# ./program ~/myProject也是。

但是,如果你写了:

test.in

...然后找不到您的~/myProject:# cd .. ~:# ./myProject/program 文件,因为test.in中不存在该文件。它存在于~中。在~/myProject

中也可以找到可执行文件本身并不重要

这实际上是理想的行为,因为它允许shell的灵活性。理想情况下,您将允许支持管道/将文件重定向到流程(~/myProject - 现在您的代码中没有任何假设[/>]),但我们可以将其保存到另一个一天。

目前,您似乎担心如果移动可执行文件会发生什么。别担心:只使用此功能!

program < test.in

您的工作目录是~:# mv myProject/program . ~:# cd myProject ~/myProject:# ../myProject 所在的目录,因此可以通过程序代码中给出的相对路径找到它。