C++ 类从文件C+中读取一个单词+;

C++ 类从文件C+中读取一个单词+;,c++,ifstream,C++,Ifstream,这是我的程序,它应该逐字从文件Team.txt中获取文本,但它说它无法打开该文件。我试图直接向文件显示目录,但答案仍然相同。我想我得到了一些东西: class Team { public: string name; string dificulty; string section; }; void GetTeamInfo(class Team); int main() {

这是我的程序,它应该逐字从文件
Team.txt
中获取文本,但它说它无法打开该文件。我试图直接向文件显示目录,但答案仍然相同。我想我得到了一些东西:

class Team
    {
        public:
        string name;
        string dificulty;
        string section;
    };



void GetTeamInfo(class Team);

    int main()
    {   
        Team ko;
        GetTeamInfo(ko);
        cout << ko.name;
        cout << ko.dificulty;
        cout << ko.section;
        system("PAUSE");
    }

void GetTeamInfo(Team)
    {
        std::ifstream fd;
        fd.open("Team.txt");
        Team ko;
        if (fd.is_open())
        {
            fd >> ko.name;
            fd >> ko.dificulty;
            fd >> ko.section;

        }
        else
        {
            std::cout << "Mistake can't open file 'Team.txt'\n";
        }
    }
班级团队
{
公众:
字符串名;
串困难;
弦段;
};
void GetTeamInfo(班级团队);
int main()
{   
高队,;
GetTeamInfo(ko);
cout>ko.困难;
fd>>ko.section;
}
其他的
{

std::cout它不起作用,因为您的参数处理完全错误

宣言

void GetTeamInfo(Team)
告诉编译器
GetTeamInfo
是一个接受
Team
类型参数的函数,但您没有给它命名,因此不能在函数中的任何位置使用该参数

如果要使用传递的参数,应为其命名:

void GetTeamInfo(Team ko)
然后,不必在函数中声明变量
ko

但是,这无论如何都不会起作用,因为默认情况下参数是按值传递的,这意味着参数是调用者值的副本。更改副本当然不会更改原始值。因此,您应该做的是通过引用传递参数:


所有这些都是非常基础的C++知识,任何好的书或教程都应该早就学会了。
至于程序无法打开您的文件的问题,有多种可能的原因:

  • 您的IDE(集成开发环境)有一个程序的当前目录,而文件不在该目录中。这可以通过项目设置进行更改

  • 文件实际上并不是你想象的那样

  • 该文件根本不存在

  • 在Linux和Mac OSX等系统上,文件名区分大小写,实际文件的名称中没有大写字母
    't'


    • 它不起作用,因为您的参数处理完全错误

      宣言

      void GetTeamInfo(Team)
      
      告诉编译器
      GetTeamInfo
      是一个接受
      Team
      类型参数的函数,但您没有给它命名,因此不能在函数中的任何位置使用该参数

      如果要使用传递的参数,应为其命名:

      void GetTeamInfo(Team ko)
      
      然后,不必在函数中声明变量
      ko

      但是,这无论如何都不会起作用,因为默认情况下参数是按值传递的,这意味着参数是调用者值的副本。更改副本当然不会更改原始值。因此,您应该做的是通过引用传递参数:


      所有这些都是非常基础的C++知识,任何好的书或教程都应该早就学会了。
      至于程序无法打开您的文件的问题,有多种可能的原因:

      • 您的IDE(集成开发环境)有一个程序的当前目录,而文件不在该目录中。这可以通过项目设置进行更改

      • 文件实际上并不是你想象的那样

      • 该文件根本不存在

      • 在Linux和Mac OSX等系统上,文件名区分大小写,实际文件的名称中没有大写字母
        't'


      验证文件Team.txt是否存在并且是否在正确的目录中,尝试为其提供完整路径(请记住转义斜杠)。确保您的进程具有打开该文件的权限。检查程序中的当前文件夹。据我所知,没有C++标准API,但有POSIX
      getcwd()
      (或其Windows版本,
      \u getcwd()
      )。请验证文件Team.txt是否存在并位于正确的目录中,尝试为其提供完整路径(请记住转义斜杠)。确保您的进程具有打开该文件的权限。检查程序中的当前文件夹。据我所知,没有C++标准API,但有POSIX
      getcwd()
      (或其Windows版本,
      \u getcwd()
      )@Blank我倾向于反复写我的答案,请检查我的更新答案。谢谢您的时间。但是我得到的错误是int main()中的GetTeamInfo(ko)match@Blank宣言(原型)在
      main
      之前,我当然必须符合实际的函数定义。我很感激你所做的一切。你帮了我很多。非常感谢。我几乎要哭了,因为它起作用了。再次感谢你。Love you@Blank我倾向于反复写我的答案,请检查我更新的答案。谢谢你的时间。但是我在int main()中显示GetTeamInfo(ko)的et错误match@Blank在
      main
      之前的声明(原型)当然必须与实际的函数定义相匹配。伙计们,我很感激你们所做的一切。你们帮了我很多。非常感谢。我几乎哭了,因为它起作用了。再次感谢你们。爱你们