假设我将一个程序添加到依赖于文件名" test.in"的路径中。我用C ++编写了这个,所以我使用了ifstream fin(" test.in")而没有指定目录。现在,如果我从不同的目录运行该程序,程序是否能够访问该文件" test.in"?
答案 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
所在的目录,因此可以通过程序代码中给出的相对路径找到它。