Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как извлечь числовое значение из HTML |
Автор: kresh 24.3.2008, 11:02 | ||||
Всем привет! Есть вопрос ,как извлечь данные из HTML файла без применения специальных средств по Xml(т.е препод сказал что это можно сделать используя только с++). Вот файл из которого надо извлечь данные
Надо извлечь число 2128.76 и записать его в переменную. Я делал так 1. Получал указатель на место в строке где находиться точка, а как дальше считать число двигаясь от этой точки(разделителя) чего то не пойму. Вот мой код
|
Автор: Alek86 24.3.2008, 11:11 | ||||||
1. Я бы препода наколол - использовав бустовский регексп ![]() 2. Не очень понятно задание. Только для этой строки нужно выделить только это число? Если так, то можно найти в строке
строки
и
то, что между ними - и есть число 2 128.76 (или вообще посчитать самому где оно находится и сделать substr |
Автор: kresh 24.3.2008, 11:43 |
тАК ПОДСЧИТАТЬ МЕСТО РАСПОЛОЖЕНИЕ ЧИСЛА ЭТО ПРОСТО, А ВОТ СДЕЛАТЬ ТАК ЧТОБ ЧИСЛО ИЗВЛЕКАЛОСЬ НЕ ЗАВАСИМО ОТ ЕГО РАСПОЛОЖЕНИЯ ВОТ ЭТО ВОПРОС! пРЕПОД ГОВОРИТ ЧТО ТИПА НАДО ИСКАТЬ РАЗДЕЛИТЕЛЬ -ТОЧКУ И ОТ НЕЁ ДВИГАТЬСЯ ДАЛЬШЕ ИСПОЛЬЗУЯ ФУНКЦИИ ДЛЯ ИЗВЛЕЧЕНИЯ ЧИСЛОВЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ,ЧТО ОНА ИМЕЛА ВВИДУ ВИГ ЕЁ ЗНАЕТ. |
Автор: Alek86 24.3.2008, 11:53 | ||
В общем если другие не хотят тебе помогать, то я вот налабал (как раз вспомнил работу с stl) Работает не всегда верно. Коли уж не будет других вариантов, можешь попытаться разобраться ![]()
|
Автор: inside_pointer 24.3.2008, 13:40 | ||
Попробуй вот такую ещё
|
Автор: profispb 24.3.2008, 14:45 |
Модератор: Сообщение скрыто. |
Автор: Alek86 24.3.2008, 14:49 |
profispb, интересно как ты учтешь пробел каждые 3 символа? |
Автор: profispb 24.3.2008, 16:06 | ||
Я написал примерно, а нафиг в данной задачи их учитывать, если нам надо просто выбрать из текста цифры? Если надо учитывать, то можно ещё одно условие ввести!) |
Автор: Alek86 24.3.2008, 16:12 |
1. не ругайся, это не чат 2. посмотри внимательней на представленную строку HTML-кода 3. учитывать легче всего начиная с точки, потому препод был прав |
Автор: profispb 24.3.2008, 16:54 | ||
1. Я не ругался... а слегка выразился!)) 2. Если исходить из пердставленной строки тогда, да.(В принципе вообще в лоб можно решить, но эт не интересно, эт интересно только когда тебе минут через 10 сдавать, а у тебя ещё ничего не написано) ! 3. А при универсальности, лучше так как я предложил!) |
Автор: Alek86 24.3.2008, 16:57 |
при универсальности нужно регексп для таких задач применять или вообще xml-парсер |
Автор: profispb 24.3.2008, 17:05 | ||
Я с тобой соглашусь, но ведь у человека обычная учебная задачка, смысла в xml-парсере нет!))) |
Автор: kresh 24.3.2008, 18:26 | ||||||
Весь прикол в том что данная страничка с кодом HTML загружается из инета и данное числовое значение
![]() |
Автор: Alek86 24.3.2008, 18:43 |
от точки влево надо искать все цифры, ( + каждый третий символ может быть пробелом). как найдется символ, что ни цифра ни пробел, закончить поиск а вправо просто цифры. получишь начало и конец числа |
Автор: profispb 24.3.2008, 20:20 | ||
Мне даже стало интересно, что ты так к пробелам то привезался, если выбрать только цифры надо?) |
Автор: inside_pointer 25.3.2008, 00:09 | ||||
Там есть цифры которые не надо, в данном случае одна, а в любом случае их может быть больше, да ещё и с каждой стороны.
Даже если ты захочешь передать сразу, всё равно у тебя получится тогда два числа из-за пробела 2 и 128.76 Можешь конечно посчитать количество цифр до точки в числе 128.76, а потом умножить первое число 2 на 10 в такой(посчитанной) степени и прибавить 2000 к 128.76, или степень реализовать через цикл с тремя шагами. |
Автор: kresh 25.3.2008, 10:28 | ||
Спасибо inside_pointer ![]() ![]() ![]() |
Автор: inside_pointer 25.3.2008, 11:40 | ||
Может быть потому что это язык С а не С++, а может быть потому что у меня линукс а не виндовс. В итоге получается double число слитное. |
Автор: inside_pointer 25.3.2008, 21:14 |
На винде тоже всё работает. |
Автор: creatorcode 26.3.2008, 00:07 | ||
Вот наваял. Вроде работает. ![]()
|
Автор: kresh 26.3.2008, 01:23 |
Спасибо всем друзья за помощь! ![]() |