Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Странное поведение string.find()

21K
09 июля 2010 года
Timmy!!
15 / / 02.06.2007
Делал парсер страницы и наткнулся на странное поведение функции find(). Функция находит в html тексте страницы только второе вхождение строки. А всего этих вхождений три. Т.е. есть в тексте 3 вхождения искомой строки, а находится только второе.
Помогите разобраться в чем дело
Код:
string html;
const string str1 = "<option value=\"separator\" disabled>—</option>";

html = getResponse("http://translate.google.ru/?hl=ru").c_str();  //получаю хтмл код страницы

size_t pos1;
pos1 = html.find(str1);
if (pos1 != string::npos) html.replace(pos1, str1.length(), "111111111111111111111111111111111111111111111111111111111111111111");
pos1 = html.find(str1);
if (pos1 != string::npos) html.replace(pos1, str1.length(), "22222222222222222222222222222222222222222222222222222222222");
pos1 = html.find(str1);
if (pos1 != string::npos) html.replace(pos1, str1.length(), "3333333333333333333333333333333333333333333333333333");


Кусок хтмл кода. Жирным выделена искомая строка
...</option><option value="separator" disabled>—</option><option value="auto">Определить язык</option><option value="separator" disabled>—</option><option value="az">азербайджанский ALPHA</option><option value="sq">албанский</option><option value="en">английский</option><option value="ar">арабский</option><option value="hy">армянский ALPHA</option><option value="af">африкаанс</option><option value="eu">баскский ALPHA</option><option value="be">белорусский</option><option value="bg">болгарский</option><option value="cy">валлийский</option><option value="hu">венгерский</option><option value="vi">вьетнамский</option><option value="gl">галисийский</option><option value="nl">голландский</option><option value="el">греческий</option><option value="ka">грузинский ALPHA</option><option value="da">датский</option><option value="iw">иврит</option><option value="yi">идиш</option><option value="id">индонезийский</option><option value="ga">ирландский</option><option value="is">исландский</option><option value="es">испанский</option><option value="it">итальянский</option><option value="ca">каталанский</option><option value="zh-CN">китайский</option><option value="ko">корейский</option><option value="ht">Креольский (Гаити) ALPHA</option><option value="lv">латышский</option><option value="lt">литовский</option><option value="mk">македонский</option><option value="ms">малайский</option><option value="mt">мальтийский</option><option value="de">немецкий</option><option value="no">норвежский</option><option value="fa">персидский</option><option value="pl">польский</option><option value="pt">португальский</option><option value="ro">румынский</option><option value="ru">русский</option><option value="sr">сербский</option><option value="sk">словацкий</option><option value="sl">словенский</option><option value="sw">суахили</option><option value="tl">тагальский</option><option value="th">тайский</option><option value="tr">турецкий</option><option value="uk">украинский</option><option value="ur">урду ALPHA</option><option value="fi">финский</option><option value="fr">французский</option><option value="hi">хинди</option><option value="hr">хорватский</option><option value="cs">чешский</option><option value="sv">шведский</option><option value="et">эстонский</option><option value="ja">японский</option></select><span class=langselect id="sl_select"></span></td><td rowspan=2 class=swapcell><div id=swap_bt class="buttons square18 swap-left swap_enabled" onclick="ctr._swap()" title="Поменять языки местами"></div></td></tr><tr><td><span class=langlabel>Язык перевода:</span></td><td><select class=tllangdropdown name=tl id="old_tl" tabindex=0 ><option SELECTED value="ru">русский</option><option value="en">английский</option><option value=""></option><option value="separator" disabled>—</option><option...
87
09 июля 2010 года
Kogrom
2.7K / / 02.02.2008
Пока не понял, в чём проблема. Похоже, тире с дефисом перепутано где-то. Ох уж эти кодировки... Можно потестировать: вставить вместо тире в строке что-то вроде & # 8212; но без пробелов. Ну, или хотя бы поэкспериментировать с куском строки до этого тире.
21K
09 июля 2010 года
Timmy!!
15 / / 02.06.2007
оказалось что браузер и мое приложение получают разный html. если смотреть через браузер то в коде три вхождения искомой строки, а в коде который получает приложение всего одно
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог