Форум программистов, компьютерный форум 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

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

11.03.2012, 18:31. Просмотров 1265. Ответов 21
Метки (Все метки)

Всем добрый день. Пытаюсь прочитать данные из файла 3D модели в формате OBJ.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool L_ObjData::LoadFromFile(string FileName)
{
   ifstream ifs(FileName.c_str());
   if (!ifs)
   {
      return false;
   }
 
   bool check = true;
 
   while(check == true)
   {
      check = ProcessLine(ifs);
   }
   ifs.close();
   return true;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool L_ObjData::ProcessLine(istream& is)
{
   string element_id;
   float x, y, z;   
 
   is >> ws;
 
   if (!(is >> element_id))
   {
      return false;
   }
   // Дальше проверка строки
Дебажу element_id, он по одному слову из файла берет, но когда доходит до чисел - они просто игнорируются.

Вот мой тестовый файл
Код
# Blender v2.56 (sub 0) OBJ File: 'cube.blend'
# www.blender.org
mtllib cube.mtl
o Cube
v 0.984421 -0.936853 -1.021311
v 0.984421 -0.936853 0.978689
v -1.015579 -0.936853 0.978689
v -1.015578 -0.936853 -1.021311
v 0.984422 1.063147 -1.021311
v 0.984421 1.063147 0.978690
v -1.015579 1.063147 0.978689
v -1.015579 1.063147 -1.021311
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
usemtl Material_matrix.jpg
s off
f 1/1 2/2 3/3 4/4
f 5/1 8/2 7/3 6/4
f 1/1 5/2 6/3 2/4
f 2/1 6/2 7/3 3/4
f 3/1 7/2 8/3 4/4
f 5/1 1/2 4/3 8/4
После того как в element_id вижу в дебаге "o" и "Cube", потом только "v" и "vt", числа пропускаются. Подскажите пожалуйста как по целой строчке записывать в строку, чтобы ее потом нарезать на куски? Или как еще это можно сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru