Вот неполная часть программы, которую я пишу. Подводя итог, программа берет информацию из входного файла (имя и идентификатор, а затем ряд номеров) выполняет некоторую математику, а затем печатает ответы в выходном файле. Сейчас программа печатает имя и идентификатор, а затем печатает числа снова и снова и снова. Я хотел бы, чтобы перейти к следующей строке, напечатайте имя и идентификатор и повторите, пока файл не закончитсяПерейти к следующей строке в файле 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());
Почему вы не читаете * все * данные на линии? И если вы этого не хотите, то почему бы не использовать ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline), чтобы читать по одной строке за раз? –
Я пробовал это раньше, но это не сработало. Я, наверное, сделал это неправильно. Могли бы вы дать мне руку? – Morgan
Это просто: 'while (std :: getline (infile, line)) {/ * помещает строку в std :: istringstream и извлекает данные из этого потока строк * /}' –