【问题标题】:How to open a file from different directory in c++?如何在 C++ 中打开不同目录中的文件?
【发布时间】:2017-03-19 12:39:50
【问题描述】:

我目前正在从事板球记分牌项目。 而且我想将团队数据保存在一个文件夹中。

我尝试了很多方法,但无法打开保存在其他文件夹中的文件。

这是我的代码的 sn-p:

if(strcmp(TeamName,"Australia")==0||strcmp(TeamName,"australia")==0)
            rf.open("/teams/australia.dat",ios::in|ios::binary);
        else if(strcmp(TeamName,"india")==0||strcmp(TeamName,"India")==0)
            rf.open("india.dat",ios::in|ios::binary);
        else if(strcmp(TeamName,"England")==0||strcmp(TeamName,"england")==0)
            rf.open("england.dat",ios::in|ios::binary);
        else if(strcmp(TeamName,"pakistan")==0||strcmp(TeamName,"Pakistan")==0)
            rf.open("pakistan.dat",ios::in|ios::binary);
        else if(rf)
        {
            cout<<"\n\t\t FILE NOT FOUND";
            return ;
        }

        if(!rf.is_open())
            cerr<<"\n\n\t\tFile not open!";
        rf.read((char*)&rec,sizeof(rec));
        cout<<"\n\t\t Team "<<TeamName;
        while(!rf.eof())
        {
            cout<<"\n\t\t "<<rec.PlayerNumber<<"\t"<<rec.PlayerName;
            rf.read((char*)&rec,sizeof(rec));
        }

没有编译时错误。该文件只是无法在运行时打开。 if(!rf.is_open()) cerr

如何使用 file.open(); 打开它

【问题讨论】:

  • 错误信息是什么意思?
  • 请注意,路径中的前导斜杠表示它是根目录的绝对路径。由此我们可以推断出不以斜杠开头的路径是相对的,并且它们与程序当前工作目录是相对的。如果你不能确定程序的工作目录是什么,绝对路径通常是好的。
  • 没有编译时错误。该文件只是无法在运行时打开。 if(!rf.is_open()) cerr
  • 某程序员老兄:谢谢!给出完整的地址有效!但是,如果我们将整个项目移到其他地方怎么办,那么每次我都必须更改代码中的地址。没有更简单的方法吗?

标签: c++ file


【解决方案1】:

我无法打开保存在其他文件夹中的文件。

我猜你的系统可能没有“/teams”文件夹。

在 Linux 上,您可能拥有自己创建的“/home/anurag/teams/australia.dat”。

我建议你在 C++ 代码中尝试相对路径。

如果您的代码和可执行文件位于 /home/anurag/teams/src 和 如果您的文件位于 /home/anurag/teams/

那么你的相对路径是'up one'目录。

  "../australia.dat"  

【讨论】:

  • 如果有更多信息,例如操作系统以及代码所在位置、可执行文件所在位置和数据文件所在位置的最简明路径,我们或许可以提供更多帮助。
猜你喜欢
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 2022-01-07
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多