ifstream没有正确读取输入文件

时间:2015-11-24 10:00:26

标签: file loops input while-loop ifstream

我有这个fillTable()函数,它使用ifstream来读取文件的输入。

void dgraph::fillTable()
{
char x = ' ';
slot = 0;
ifstream fin("table.txt");
while (fin >> Gtable[slot].vertexName)
{
    countUsed++;

    while (fin >> Gtable[slot].outDegree)
    {
        int y = 0;
        while (y < Gtable[slot].outDegree)
        {
            fin >> x;
            Gtable[slot].adjacentOnes.addRear(x);
            y++;
        }
    }
    slot++;
}
fin.close();
}

问题是主while循环只执行一次。我需要它继续前进,直到文件中没有任何内容。到目前为止我能够弄清楚的是,除0之外的其他指数似乎都没有起作用。我尝试从索引1开始,并为vertexName获得-52'Ì',为outDegree获得-858993460。

    A 2 B F
    B 2 C G
    C 1 H
    E 0
    F 2 I E
    G 0
    H 2 G I
    I 3 A G E

这是我想要读入Gtable的输入文件。每行的第一个字母是vertexName,数字是outDegree,每行的其余字母表示初始顶点的相邻顶点。基本上我从第一行得到了所有东西,然后它突破了循环,我不确定为什么会这样。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

刚加入休息;声明到第二个循环。

while (fin >> Gtable[slot].vertexName)
{
    countUsed++;

    while (fin >> Gtable[slot].outDegree)
    {
        int y = 0;
        while (y < Gtable[slot].outDegree)
        {
            fin >> x;
            Gtable[slot].adjacentOnes.addRear(x);
            y++;
        }
        break;
    }
        slot++;
}
fin.close();