Форум программистов, компьютерный форум CyberForum.ru

Парсинг файла игнорирует числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция чисел Фибоначчи, предшествующих вводимому числу http://www.cyberforum.ru/cpp-beginners/thread516290.html
С помощью рекурсивной функции вычислить и вывести числа Фибоначчи, предшествующие вводимому числу
C++ Узнать, какие элементы в массиве встречаются больше одного раза. Задается массив. Узнать, какие элементы в массиве встречаются больше одного раза. http://www.cyberforum.ru/cpp-beginners/thread516280.html
Одномерные массивы: Удалить из массива нули и после каждого числа, оканчивающегося на 5, вставить 1 C++
Дан массив. Удалить из него нули и после каждого числа, оканчивающегося на 5, вставить 1.
Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце C++
Дана целочисленная матрица размера M × N. Найти элемент, являю-щийся максимальным в своей строке и минимальным в своем столбце. Ес-ли такой элемент отсутствует, то вывести 0.
C++ Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию. http://www.cyberforum.ru/cpp-beginners/thread516268.html
Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию.
C++ Найти номер первой из ее строк, содержащих равное количество положительных и отрицательных элементов Дана целочисленная матрица размера M × N. Найти номер первой из ее строк, содержащих равное количество положительных и отрицательных элементов (нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести 0. подробнее

Показать сообщение отдельно
Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
13.03.2012, 18:24  [ТС]     Парсинг файла игнорирует числа
Помогите пожалуйста найти ошибку. Парсинг этого же файла.

Фрагмент
Код
	case OBJ_STRING_VERTEXPOS:
		fin >> x >> y >> z;
		AddPosition(x, y, z);
		SkipLine(fin);
		break;
В x,y,z не записываются нормальные данные. (см. прилепленный файл)

Строчка в файле данных
Код
v 0.984421 -0.936853 0.978689
Весь код
Код
////////////////////////////////////////////////////////////////////////////////
// Filename: L_objdata.cpp
////////////////////////////////////////////////////////////////////////////////
#include "L_objdata.h"

L_ObjData::L_ObjData()
{

}

L_ObjData::~L_ObjData()
{

}

bool L_ObjData::LoadFromFile(string FileName)
{
	ifstream fin;
	fin.open(FileName);
	fin >> noskipws;

	if(!fin)
	{
		return false;
	}

	while(!fin.eof())
	{
		ProcessLine(fin);
	}

	return true;
}

OBJ_STRING L_ObjData::CheckLineType(string teststring)
{
	if(teststring == "#")
	{
		return OBJ_STRING_COMMENT;
	}
	if(teststring == "v")
	{
		return  OBJ_STRING_VERTEXPOS;
	}
	if(teststring == "vt")
	{
		return  OBJ_STRING_TEXCOORD;
	}
	if(teststring == "f")
	{
		return  OBJ_STRING_FACE;
	}

	return  OBJ_STRING_UNKNOWN;
}

bool L_ObjData::ProcessLine(ifstream& fin)
{
	string element_id;
	if(!(fin >> element_id))
	{
		return false;
	}

	float x, y, z;

	switch(CheckLineType(element_id))
	{
	case OBJ_STRING_COMMENT:
		SkipLine(fin);
		break;
	case OBJ_STRING_VERTEXPOS:
		fin >> x >> y >> z;
		AddPosition(x, y, z);
		SkipLine(fin);
		break;
	case OBJ_STRING_TEXCOORD:
		SkipLine(fin);
		break;
	case OBJ_STRING_FACE:
		SkipLine(fin);
		break;
	case OBJ_STRING_UNKNOWN:
		SkipLine(fin);
		break;
	};

	return true;
}

void L_ObjData::SkipLine(ifstream& fin)
{
    char next = ' ';
    while(next != '\n')
	{
		fin >> next;
	};
}

void L_ObjData::AddPosition(float tx, float ty, float tz)
{
	positions.push_back(float3(tx,ty,tz));
}
Миниатюры
Парсинг файла игнорирует числа  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru