C ++从数据文件中将数据输入到struct变量中

时间:2013-02-06 12:38:58

标签: c++ arrays file struct fstream

我有一个包含姓名和号码的文本文件。名称或字符串包含15个字符,我需要将其放入字符串。我正在使用结构。

struct grybautojas{
    string vardas;
    int barav, raudon, lep, diena;
}gryb[100];

之后,有一些简单的计算是正确的,问题是,它只读取一次。拿出第一个“盒子”信息后,它就会停止。结果文件中的其他所有内容都为空白字符串或0为整数。

这是我的输入功能:

void ivedimas(){
    char eil[16];
    int b,r,l;

    inFile >> n;
    inFile.ignore();

    for(int i=0;i<n;i++){
        inFile.get(eil,15);
        gryb[i].vardas=eil;
        inFile >> gryb[i].diena;

        gryb[i].barav=0, gryb[i].raudon=0, gryb[i].lep=0;

        for(int m=0;m<gryb[i].diena;m++){
            inFile >> b >> r >> l;
            gryb[i].barav+=b, gryb[i].raudon+=r, gryb[i].lep+=l;
        }

        inFile.ignore();
    }

    inFile.close();
}

这是包含数据的文件:

4
Petras        3
5 13 8
4 0  5 
16 1 0 
Algis         1 
9 6 13 
Jurgis        4 
4 14 2 
4 4  15 
16 15 251 
1  2  3 
Rita          2 
6 65 4 
4 4  13

有什么问题?

2 个答案:

答案 0 :(得分:2)

    inFile.get(eil,15);

    Rita          2 
    Petras        3
    00000000011111
    12345678901234

我不算15,我算14.还有,你的一些线似乎在最后有一个空格。您应该重写输入逻辑以使更多更健壮。阅读并解析它们。

答案 1 :(得分:0)

这一行:

inFile.get(eil,15);

正在读取名称后面的数字。

当您尝试读取数字时(示例中为3),您将获得下一个(5)。