2013-02-06 36 views
0

我有一个包含名称和数字的文本文件。名称或字符串包含15个字符,我需要把它放到字符串中。我正在与结构工作。C++将数据输入到数据文件的结构变量中

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
inFile.get(eil,15); 

    Rita   2 
    Petras  3 
    00000000011111 
    123456789

我不计算15,我计数14.此外,您的一些行似乎有一个空间在最后。你应该重写你的输入逻辑更强大。阅读并解析它们。

+0

是的,应该计算空间,只是复制和粘贴数据信息之前没有一个明确的看。 – RnD

0

这条线:

inFile.get(eil,15); 

被阅读下面的名称中的数字。

当您尝试阅读数字(在您的示例中为3)时,您将得到下一个(5)。

相关问题