4

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

4

2 回答 2

3

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

于 2013-11-03T10:07:18.070 回答
2

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

int main(int arg, char* args[]) {

   FILE *newfile = fopen( args[1], "r");

}

您不能确定所有计算机都正确映射了 F: 驱动器,因此最好使用通用命名约定 (UNC) 名称,即“\server\share\path\file”。

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

于 2013-11-03T11:18:05.323 回答