2016-03-10 3 views
0

мне нужно открыть файл в этом форматеC++ Назначение слов из входного файла в строки или Интс

Firstname Lastname 1 2 3 4 5 

Firstname Lastname 2 3 4 5 6 

Мне нужно присвоить имя строки в массив членов структур и фамилию строка к другому члену структуры и каждому номеру строки в массив баллов в структуре, и каждая новая строка переходит к следующему индексу массива struct, делая то же самое (Извините, если я так плохо сформулировал).

Я не слишком беспокоюсь о назначении оценки. У меня есть идея, как это сделать, но прямо сейчас я пытаюсь использовать getline для каждого слова подряд для строк внутри структур, но когда я запускаю код, он пропускает первую строку и вводит имя и фамилию второй строки, и я не могу понять, как начать с первой строки.

Вот мой код

ifstream fin; 
fin.open("Scores.txt"); 
if (!(fin.is_open())) 
    cout << "Failed to open file.\n"; 

if (stuCount < 10) 
{ 
    for (int n = 0; !fin.eof();) 
    { 
     for (string line[10]; getline(fin, line[n]); n++) 
     { 
      fin >> students[stuCount].fname >> students[stuCount].lname; 
      stuCount++; 
      cout << line[n] << endl; 
     } 
    } 
} 

ответ

0

Ваша проблема в том, что оба GetLine и (>>) оператор продвигаемся положение буфера чтения в потоке. Вам нужно буферизировать ваш вызов для getline.

Идея для изменения кода вверх будет таким:

ifstream fin("Scores.txt", ifstream::in); 
if (!fin.is_open()) { 
cout << "Failed to open file." << endl; 
    return -1; 
} 

if (stuCount < 10) 
{ 
    while (!fin.eof()) 
    { 
     string line; 
     getline(fin, line); 
     stringstream ss(line); 
     ss >> students[stuCount].fname >> students[stuCount].lname; 
     cout << line << endl; 
     stuCount++; 
    } 
} 
+0

Спасибо за ответ. К сожалению, мы еще не перешли потоки строк в классе, но я не могу его использовать. Вы знаете какой-либо другой способ? –

+0

@DatNguyen Тогда вы на правильном пути со своим оригинальным вопросом, вам просто нужно исправить свои петли. Измените циклы for, чтобы они были похожи на цикл while, который я опубликовал. – Tanner

+0

О, сладкое спасибо! Я попробую. –