2015-02-10 4 views
0

Каждая строка текстового файла имеет имя, фамилию и зарплату. Что-то вдоль линий этого:Чтение данных по строке из текстового файла

John Doe 4000

боб мельник 9000

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

while (inFile){ 

    inFile >> firstName; 
    inFile >> lastName; 
    inFile >> grossPay; 

    cout << firstName << " " << lastName << " " << grossPay << endl; 
} 

Когда он выводит имена и зарплату, последняя строка текстового файла получает выход в два раза по программе. Как я могу это исправить?

ответ

2

После прочтения последней строки inFile все еще находится в действующем состоянии.

Это только , когда он пытается читать больше, что ваш тест потерпит неудачу, но контроль уже вошел в цикл еще раз.

Вы хотите проверить после чтение.

while (inFile >> firstName >> lastName >> grossPay){ 
//  ^^ Now the test happens AFTER reading... 
    cout << firstName << " " << lastName << " " << grossPay << endl; 
} 
Смежные вопросы