多次使用从文件中读取的函数

时间:2014-09-02 08:52:13

标签: loops ifstream

在我的程序中,我有函数Get_auto(); 我希望它能做到这样的事情:

void Cook::Get_auto(){  
ifstream ifile;
ifile.open("sourcek.txt");
char choice;
ifile >> choice;
switch (choice)
{
case '0': lvl = 0;
    break;
case '1': lvl = 1;
    break;
case '2': lvl = 2;
    break;
case '3': lvl = 3;
    break;
case '4': lvl = 4;
    break;
}
}

问题是我想多次使用Get_auto函数,每次都将数据加载到文件最后使用的部分下面。 我该怎么做?

1 个答案:

答案 0 :(得分:0)

将ifstream作为私有字段移动到类中。然后,创建一个方法Cook::open,在其中打开ifstream。在Cook::Get_auto中仅使用>>运算符。第一次调用open方法之前,请调用Get_auto方法。

这样的事情:(假设它是一个C ++代码,这将在头文件中)

private:
    ifstream ifile;

public:
    void open();
    void Get_auto();

,这将在源文件中:

void Cook::open() {
    ifile.open("sourcek.txt");
}

void Cook::Get_auto(){  
    char choice;
    ifile >> choice;
    switch (choice)
    {
    case '0': lvl = 0;
        break;
    case '1': lvl = 1;
        break;
    case '2': lvl = 2;
        break;
    case '3': lvl = 3;
        break;
    case '4': lvl = 4;
        break;
    }
}

添加一些检查ifile是否已打开以及您是否可以阅读它也是明智的。