2017-02-20 8 views
1

Вот неполная часть программы, которую я пишу. Подводя итог, программа берет информацию из входного файла (имя и идентификатор, а затем ряд номеров) выполняет некоторую математику, а затем печатает ответы в выходном файле. Сейчас программа печатает имя и идентификатор, а затем печатает числа снова и снова и снова. Я хотел бы, чтобы перейти к следующей строке, напечатайте имя и идентификатор и повторите, пока файл не закончитсяПерейти к следующей строке в файле C++

Профессор говорит, что я должен использовать GetLine, но это не делает никакого смысла для меня

do 
{ 
    infile >> name >> Id; 
    cout<< name << Id << std::endl; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
} 
while(!infile.eof()); 

вход:

 
Morgan 12388671 100 100 100 
John 67894 100 100 100 

выход:

 
Vagts,Morgan 
100100 
100100 
100100 
100100 
100100 
(300,000 more times) 

Обновление:

do 
{ 
    while (getline (infile, line)) 
    { 
    istringstream iss(line); 
    iss >> name >> Id; 
    cout<< name << Id; 
    hworkgrade = CalHworkGrade(grade1, infile); 
    printRecord(name, Id, outfile); 
    } 
} 

while (! Infile.eof());

+1

Почему вы не читаете * все * данные на линии? И если вы этого не хотите, то почему бы не использовать ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline), чтобы читать по одной строке за раз? –

+0

Я пробовал это раньше, но это не сработало. Я, наверное, сделал это неправильно. Могли бы вы дать мне руку? – Morgan

+0

Это просто: 'while (std :: getline (infile, line)) {/ * помещает строку в std :: istringstream и извлекает данные из этого потока строк * /}' –

ответ

2

использование GetLine (входной_файл, «строка переменной»)

Использование ПОЛУЧИТЬ линии иногда может привести к ошибкам при чтении следующей строки, потому что иногда требуется «конец строки» в качестве следующей инструкции для чтения, так что используйте cin.ignore(); до или после вашего оператора getline в зависимости от того, где он лучше всего подходит для вас.

+0

Это сработало спасибо! – Morgan

+0

@Morgan Добро пожаловать :) –

Смежные вопросы