Добрый день! У меня имеется статический метод listOfStudents()
который открывает текстовый файл и считывает оттуда мои данные...
Мой текстовый файл выглядит вот так:
Как вы можете видеть на картинке простой текстовый файл с данными.
Моя задача это взять оттуда Имя и Фамилию и вывести на экран:
Полноценно мой метод выглядит вот так:
static void listStudents(){
cout << endl << "List students" << endl<< endl;
ifstream textfile;
string line;
string unused = "";
textfile.open("students.txt");
if(textfile.is_open()){
int count = 0;
for(int i = 0 , j = 0; !textfile.eof(); i++){
if(i == j){
count++;
textfile >> line;
cout << count << ": " << line;
textfile >> line;
cout << " " << line << endl;
j+=11;
}else{
textfile >> unused;
unused = "";
}
}
}else{
cout << "You don't have any students!" << endl;
}
textfile.close();
cout << endl << endl;
main();
}
У меня в текстовом файле имеет 4 студента, и когда я вывожу на экран происходит следующее:
Как видите все нормально показывает, только вот в конце почему то генерирует еще 1 строку где дважды дублируется фамилия предыдущего студента. Вопрос: Почему он так делает? И каким способом можно это исправить?
Как видите все нормально показывает, только вот в конце почему то генерирует еще 1 строку где дважды дублируется фамилия предыдущего студента.
Потому что не надо проверять
!textfile.eof()
На момент проверки конец файла ещё не достигнут - он достигается только при попытке чтения. Соответственно, прочитать ничего не удаётся и в переменной сохраняется предыдущее значение. А ближайшая проверка осуществляется только перед следующей итерацией цикла.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В чем ошибка?задание вычисление функции разложения в рядво внутреннем цикле значение суммы ТЕКСТ ЗАДАНИЯ
Пишу инсталлятор, который, как принято, должен создавать ярлык на рабочем столе и группу в меню ПускНаходил в сети много вариантов одной и той...