2015-11-24 2 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 'Ì' для vertexName и -858993460 для outDegree.

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. Первая буква каждой строки - это имя вершины, число - значение 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(); 
Смежные вопросы