Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Простенький парсер в С++  (Прочитано 16533 раз)
0 Пользователей и 1 Гость смотрят эту тему.
cooler_3105
Гость
« : 05-08-2008 16:34 » 

Прошу помочь. Считываю программой txt файл вида:
...
Дата: 5.8.08
Время: 11:20
Дозировка инсулина: 125
Показания глюкометра: 325
Дневной рацион: суп, хлеб
Физическая нагрузка: бег, прыжки

Дата: 5.8.08
Время: 11:27
Дозировка инсулина: 123
Показания глюкометра: 326
Дневной рацион: макароны, котлета
Физическая нагрузка: отжимания, футбол
...
Нужно в числовой массив забить значения дозировки инсулина. Т.е. a[0]=125; a[1]=123; и т.д. пока не наберется 50 значений. Заранее благодарен!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 05-08-2008 16:42 » 

1) Читаеш строку из файла.
2) Проверяеш, что начало строки соответствует фразе "Дозировка инсулина: ", если да, то дальнейший текст переводиш в число и загоняеш в массив.
3) Цикл (Количество записей равно или больше 50 записей, или пока не закончился файл). Если ни одно из условий не выполнилось, перейти к строке 1.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
cooler_3105
Гость
« Ответ #2 : 05-08-2008 17:32 » 

Finch, если не трудно, можешь кодом?
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 05-08-2008 19:34 » 

cooler_3105, а вроде должна быть масса готовых парсеров? чем не устраивают?
первый попавшийся
http://warp.povusers.org/FunctionParser/
правда он для разбора функций...
но если поискать...

а если вообще один тип только интересует тогда char* dest = strstr(text,"название_параметра:") тебе в руки. построчно разбираешь весь файл,
если dest  не нулевое - тогда  int val = atoi(dest) его(если значение не может быть нулевым). и так по всем строчкам.
« Последнее редактирование: 05-08-2008 20:04 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 05-08-2008 19:43 » 

да какой здесь нафик парсер - стандартная работа с файлом и строками...
Просто челу лень самому код написать.
причем, он все сам рассказал. Жаль
тут, блин, работы, как там тема была  - на "две минуты".

или же чел в С++ нулевой.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #5 : 05-08-2008 21:02 » 

Код:
#include <iostream>
#include <fstream>

int main()
{
    using namespace std;
    unsigned int buff[50]={0};
    unsigned i = 0;
    string S;
    ifstream file;

    file.open("medik.txt");

    while(getline(file,S))
    {
        if(если в S нашел то что тебя интересует)
        {
               отрезаеш лишнее, а нужное ложеш в буфер
               buff[i] = твое значение;
               i++;
        }
    }

return 0;
}
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 06-08-2008 05:34 » 

Славик абсолютно прав. Это же по сути простой ini-файл. Список блоков. Метка блока "Дата" и... и всё.
Какой парсер? Всего-то и требуется две ф-ции поиска и выделения подстроки.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #7 : 06-08-2008 06:38 » 

кстате по времени затраченном на написание, быстрее будет на перле. Я вообще не сторонник, что бы для подобный задач использовать серьезные языки программирования, такие как Си да еще и ++.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines