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

Неправильное считывание данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить блок-схему по коду http://www.cyberforum.ru/cpp-beginners/thread912616.html
Здравствуйте. помогите пожалуйста сделать блок схему для данной программы: #include "stdafx.h" #include <iostream> #include <math.h> #include <conio.h> #include <windows.h> #include <locale.h> using namespace std;
C++ Открытие файла на C++ Здравствуйте. Появился вопрос, если, допустим, писать батник, то для открытия файла нужно писать start (или open) "Путь к файлу"... А как такое реализовать с помощью кода C++? Чтоб открывался файл. http://www.cyberforum.ru/cpp-beginners/thread912614.html
C++ Запись числа в экспоненциальном виде
Подскажите, пожалуйста, как записывать в код значения таких чисел, как например 6.67384 × 10-11
реализация stack и dack в STL C++
я так понимаю, что реализация этих адаптеров основана на vector и list ? Тогда зачем нужен stack, если достаточно dack ?
C++ Объяснить зачем нужен i http://www.cyberforum.ru/cpp-beginners/thread912571.html
#include <iostream> #include <conio.h> using namespace std; int main() { cout << "Enter chislo and stepen: "; double chislo;
C++ игра на c++ c псевдографикой Пишу на курсач игру на c++ с псевдографикой, на половине работы столкнулся с проблемой, с появлением каждой новой комнаты скорость все больше уменьшается, нужна помощь с другим алгоритмом пс. ходит пока что только вперед(8) когда дойдете до стенки поверните на лево(4) тут и начинаются тормоза пспс. что бы пройти вперед нажмите цифру и enter подробнее

Показать сообщение отдельно
Izaron
7 / 6 / 1
Регистрация: 29.12.2012
Сообщений: 41

Неправильное считывание данных - C++

26.06.2013, 17:11. Просмотров 301. Ответов 5
Метки (Все метки)

Всем привет. Писал программу для считывания данных и запоролся на одном месте.

В общем, проблема такова - в файле встречаются строки, начинающиеся на f, как то:
f 710/1714/442 713/1718/444 717/1717/447
f 722/337/452 726/344/456 724/335/454
f 722/337/452 728/343/457 726/344/456
f 722/337/452 730/342/459 728/343/457
Вот код считывания:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ifstream fin;
char input, input2;
//.....
fin.open(filename);
 
if(fin.fail() == true)
        return false;
 
fin.get(input);
while(!fin.eof())
{
//.......
        if(input == 'f') 
        {
            fin.get(input);
            if(input == ' ')
            {
                    fin >> faces[faceIndex].vIndex3 >> input2 >> faces[faceIndex].tIndex3 >> input2 >> faces[faceIndex].nIndex3
                        >> faces[faceIndex].vIndex2 >> input2 >> faces[faceIndex].tIndex2 >> input2 >> faces[faceIndex].nIndex2
                        >> faces[faceIndex].vIndex1 >> input2 >> faces[faceIndex].tIndex1 >> input2 >> faces[faceIndex].nIndex1;
 
                faceIndex++;
            }
        }
 
        while(input != '\n')
            fin.get(input);
 
        fin.get(input);
}
 
fin.close();
Проблема в том, что строки, начинающиеся на f, не всегда содержат по 9 цифр, разделенных пробелами и /. Такая строка может выглядеть так:
f 710//442 713//444 717//447
f 722//452 726//456 724//454
Без проблем - код:
C++
1
2
3
fin >> faces[faceIndex].vIndex3 >> input2 >> input2 >> faces[faceIndex].nIndex3
>> faces[faceIndex].vIndex2 >> input2 >> input2 >> faces[faceIndex].nIndex2
>> faces[faceIndex].vIndex1 >> input2 >> input2 >> faces[faceIndex].nIndex1;
Отлично работает.

Но в файле может быть и тот и другой вид строки. Как их совместить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru