2015-11-24 71 views
0

我有這個fillTable()函數,它使用ifstream從文件中讀取輸入。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開始,獲得頂點名稱的-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,每行上的其餘字母表示初始頂點的相鄰頂點。基本上,我從第一行中得到了所有的東西,然後它從循環中跳出,我不確定這是爲什麼。任何幫助表示讚賞。

+0

WOWOWOWOW!只是固定它,我知道沒有人回答了這一問題還沒有,但似乎所有我需要的是增加一個突破;語句到第二個while循環。 – BugCity

回答

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();