如何从文件中读取多个名称和数字?

时间:2014-02-06 22:12:51

标签: c++ file-io fstream

HeJ小鼠!我需要能够从每行的文件中读取5个变量,这些行的格式不同,具有不同的名称

MIKE           ,CHENAULT       , 82 , 24 , 90

我似乎无法弄清楚如何分别读取每个单词和整数,我考虑使用字符数组作为名字,因为我需要输出它们就像这样

Jones,J  -----   95

数字将通过公式计算,但我不知道如何从一行中获取5个不同的变量。任何帮助将非常感激!

1 个答案:

答案 0 :(得分:0)

我建议使用Person类,其中包含名字,姓氏和三个数字作为数据成员。然后,您可以定义一个可用于促进输入的提取器:

struct Person
{
public:
    friend std::istream& operator>>(std::istream& is, Person& p); // for input
    friend std::ostream& operator<<(std::ostream& os, const Person& p);
                                                                  // for output
private:
    std::string first, last;
    int a, b, c;
};

// definition of the extractor
std::istream& operator>>(std::istream& is, Person& p)
{
    char comma;
    is >> p.first >> comma >> p.last >> comma;
    is >> p.a     >> comma >> p.b    >> comma >> p.c;

    return is;
}

现在您可以创建包含1000个Person个实例的数组(或向量):

std::vector<Person> v;

Person p;
while (file >> p)
{
    v.push_back(p);
}

稍后当您想要输出时,可以使用您定义的插入器。例如:

std::cout << v[5];