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

时间:2014-09-29 11:43:06

标签: c++ ifstream

这是我的程序,它应该从文件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";
        }
    }

1 个答案:

答案 0 :(得分:4)

它不起作用,因为你的参数处理都是错误的。

声明

void GetTeamInfo(Team)

告诉编译器GetTeamInfo是一个接受类型为Team的参数的函数,但是你没有给它起一个名字,所以你不能在函数内的任何地方使用该参数。 / p>

如果你想使用传递的参数,你应该给它一个名字:

void GetTeamInfo(Team ko)

然后,您不必在函数内声明变量ko

但是,这无论如何都不会起作用,因为默认情况下参数是按值传递 ,这意味着参数是来自调用者的值的副本。而更改副本当然不会改变原件。所以你应该做的是通过引用传递参数

void GetTeamInfo(Team& ko)

所有这些都是非常基本的C ++知识,任何好的书或教程应该很早就学会了这一点。


至于程序无法打开文件的问题,导致该问题的原因可能有多种:

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

  • 该文件实际上并非您认为的位置。

  • 该文件根本不存在。

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