@IliaNeverov

Почему неправильно выполняется цикл?

Всем привет! У меня возникла очень странная ситуация. В одном проекте цикл выполняется как было задумано, в другом все наоборот.
Вот мой код:
#include "OBJLoader.h"

void OBJLoader::loadFile(std::string way)
{
	fin.open(way);
	if (!fin.is_open()) {
		std::cout <<"ошибка открытия файла: "<<way << std::endl;
	}
	else {
		std::cout << "meow" << way << std::endl;
		while (!fin.eof()) {
			fin >> read;
                        
			
                        //считываю строки которые начинаются с f (их всего 2)
			if (read == "f") {
				for (int i = 0; i < 3; i++) {
					fin >> Index;
					std::cout << "fv " << Index << " ";
					fin.ignore(1, '/');
					fin >> Index;
					std::cout << "ft " << Index << " ";
					fin.ignore(1, '/');
					fin >> Index;
					std::cout << "fn " << Index << std::endl;
				}

			}
		}
	fin.close();
	}
}

файл:
# Blender v2.90.0 OBJ File: 'plita.blend'
# www.blender.org
mtllib plita.mtl
o Cube
v 1.000000 0.000000 -1.000000
v -1.000000 0.000000 -1.000000
v 1.000000 0.000000 1.000000
v -1.000000 0.000000 1.000000
vt 1.000000 0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.000000 1.000000
vn 0.0000 1.0000 0.0000
g Cube_Cube_Material
usemtl Material
s off
f 3/1/1 2/2/1 4/3/1
f 3/1/1 1/4/1 2/2/1

То что выводит метод в консоль:

fv 3 ft 1 fn 1
fv 2 ft 2 fn 1
fv 4 ft 3 fn 1
fv 3 ft 1 fn 1
fv 1 ft 4 fn 1
fv 2 ft 2 fn 1
//это я не знаю откуда , если этот код(который выше) вставляю в другой  проект то выводится все как надо(без этих строк где только еденицы) 
fv 1 ft 1 fn 1 
fv 1 ft 1 fn 1 
fv 1 ft 1 fn 1


Скажите пожалуйста откуда эти строки взялись и как сделать чтобы все работало как надо?
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Скажите пожалуйста ... как сделать чтобы все работало как надо?

Чтобы работало как надо, надо разобраться, что делает eof() и в каком месте его надо писать. Подсказка: в начале пустого файла eof() возвращает false.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы