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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
11.03.2012, 18:31     Парсинг файла игнорирует числа #1
Всем добрый день. Пытаюсь прочитать данные из файла 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", числа пропускаются. Подскажите пожалуйста как по целой строчке записывать в строку, чтобы ее потом нарезать на куски? Или как еще это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2012, 18:31     Парсинг файла игнорирует числа
Посмотрите здесь:

C++ Парсинг строк из файла
Парсинг файла C++
C++ Парсинг файла
typdef struct + парсинг из файла C++
C++ Парсинг и валидация записи числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
13.03.2012, 21:11  [ТС]     Парсинг файла игнорирует числа #21
Проблема решена. Вот так работает, остается только строку нарезать ручками.
C++
1
2
char s[256];
fin.getline(s, 256);
Но вопрос про оператор >> открыт. Если кто-нибудь знает, почему он здесь не работает - напишите пожалуйста, буду очень признателен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 17:59     Парсинг файла игнорирует числа
Еще ссылки по теме:

Парсинг из файла и суммирование столбца C++
C++ Парсинг файла .cnf
C++ Парсинг файлов, найти целые числа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
14.03.2012, 17:59     Парсинг файла игнорирует числа #22
C++
1
2
3
4
5
6
7
8
ifstream f("cube.obj");
string s;
float x, y, z;
f >> s;
if(s == "v")
{
    f >> x >> y >> z;
}
Yandex
Объявления
14.03.2012, 17:59     Парсинг файла игнорирует числа
Ответ Создать тему
Опции темы

Текущее время: 16:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru