如何引用要以C++打开的文件,因为其完整路径名将因计算机而异

How to reference a file to be opened in C++ given that its full path name will change from computer to computer?

本文关键字:因为 路径名 计算机 文件 引用 何引用 C++      更新时间:2023-10-16

我们的计算机科学老师给了我们一个项目,使用C++制作一个功能齐全的控制台应用程序。我已经开始成功了。但我在某个时候被卡住了。我想使用 open() 函数打开一个可编辑的文本 ( .txt ) 文件。但是我为所有文本文件制作了一个单独的文件夹。通常我必须在open()函数中提供完整的目录路径,这在我的情况下是F:WorkC++SchoolProjectTextFiles的。但是,如果我将SchoolProject文件夹复制到便携式驱动器中并将其带到我朋友的家中并尝试在他们的计算机中运行该程序怎么办。会起作用吗?我问是因为他们没有必要在F目录中拥有Work文件夹,或者他们可能根本没有F磁盘。因此,在这种情况下,路径将发生变化。那么我必须在 open() 函数中键入什么路径,以便程序在每台计算机上运行,每次我尝试在其他计算机上运行该程序时,都不会更改open()函数中的地址。源代码可能有助于解释。谢谢!

不应使用绝对路径,而应使用相对路径。从文件夹运行程序时,这是您的工作路径。然后,您可以通过仅将文件名或文件夹和文件名传递给 open 函数来打开此文件夹或此文件夹的子文件夹中的文件。因此,与其打开C:...不如简单地打开someFoldersomeFile.txt.

您可以考虑将解析的文件名作为命令行参数的一部分,如下所示:

int main(int arg, char* args[]) {
   FILE *newfile = fopen( args[1], "r");
}

您不能确定所有计算机都正确映射了F:驱动器,因此最好使用通用命名约定 (UNC) 名称,即"\服务器\共享\路径\文件"。

实现相同目的的一个好方法是使用 Boost 文件系统,但这会使您的代码更加复杂,因为您依赖于外部库(阅读:学生可能会感到困惑)。Boost 文件系统的文档可在此处找到:http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm

相关文章: