Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #56, ИЮЛЬ 2005 г.

Телефонодобывающий комбайн

Tony (tony@MadTanks.com)

Спецвыпуск: Хакер, номер #056, стр. 056-060-5


ТИП: Листинг

//В векторе context находится содержимое файла

vector<char>::const_iterator it, end;

it = context.begin();

end = context.end();

//Итерируемся по файлу в прямом направлении

while( 1 )

{

//До тех пор, пока в нем находятся символы ‘8’

it = find(it, end, '8');

if( it==end )

break;

//Анализируем ту часть текста, где предположительно находится телефон

ParsePhone( string( it, 32 ) );

//Продолжаем поиск в оставшейся части текста

++it;

}

"Анализ строки, содержащей номер телефона"

ТИП: Листинг

//Выбираем из текста токены, разделяемые следующими сепараторами: "-;|() .:<>/\\,".

string number;//Найденный номер телефона

typedef tokenizer<char_separator<char> > tTokenizer;

char_separator<char> separators("-;|() .:<>/\\,");//Возможные разделители между цифрами

tTokenizer tokens(context, separators);//Создаем токены

//Итерируемся по всем найденным токенам

for (tTokenizer::iterator it=tokens.begin(); it!=tokens.end(); ++it)

{

//Если количество последовательно записанных цифр в номере перевалило за 11, значит, номер собран

if( number.length()>=11 )

break;

//Проверяем, состоит ли токен только из цифр

if( isDigit(*it) )

number += *it;

else

return;

}

//Добавляем собранный номер телефона в предварительный список

mCellList.push_back( number );

"Регистрация фильтров"

cFinder::cFinder()

{

//Регистрируем фильтры поиска номеров

mFilterList.push_back( new cInternationalFilter );

mFilterList.push_back( new cFederalFilter );

}

Клондайк номеров телефонов

ТИП: WWW

www.job.ru

www.rabota.ru

www.izrukvruki.ru

www.flirt.ru

Рекомендуемая литература

ТИП: Книги

1. Бьерн Страуструп. Язык программирования С++.

2. Скотт Мейерс. Эффективное использование STL.

3. Гамма, Хелм, Джонсон, Влиссидес. Паттерны проектирования.

Назад на стр. 056-060-4  Содержание