А при чем тут парсер и libcurl? Библиотека libcurl очень хорошо подходит для работы с протоколом HTTP(S), тем более для нее есть куча оберток под C++.
Ну ок . Вообще я в том смысле , что может лучше есть ? Парсер для сайта . Скачать странички , потом распарсить данные в sqlite хочу . Вроде все понятно . Насчет кучи оберток можно подробнее ? Есть curlpp . Инфы по нему немного , похоже пользуются нечасто . Последний релиз 2009 года . И пока он у меня даже не собрался . (И нафига вообще собирать , не могли сделать заголовочный что-ли ?)
По запросам "curl c++ wrapper" или "libcurl c++ binding" в гугле выдается много разных плюсовых оберток, хотя на сайте curl'а упомянут действительно только curlpp. Сам, когда юзал курл в плюсах, никакие обертки не брал, написал небольшую свою (пример тут, файлы web_content_loader.h/.cpp).
Да . Но . Он у тебя однопоточный . Это неактуально . Нужен многопоток . Хочется связать callback курла с контейнером типа map<string , string> чтобы на лету рассовывать страницы в <url , html_data> . Нужно просто передавать в гребанный коллбек iterator контейнера . Но сишный коллбек не принимает итераторов Не по теме . Оказывается это ты dx ? Вот бы и не подумал .
Не многопоточный, да, функцию load сразу из нескольких потоков не вызвать, но можно создать по одному такому классу на каждый поток и радоваться, в таком случае работать будет. Если хочется как-то по-другому, то, вероятно, придется самому написать. А сишный коллбэк принимает void*, в который можно что угодно пихнуть так-то (например, указатель на контекст загрузки, как сделано у меня, погугли CURLOPT_PROGRESSDATA). И это я dx, да +)
Можно самому потоки с curl_easy наплодить . Можно передавать в коллбек что-то вроде структуры с нужными данными , выделяя через new . Но как бы по-идее библиотека должна облегчать задачу кодера . А не заставлять искать обходные пути для самого очевидного . А иначе получается она ненужна .
Code: int dlina (char *a){ int dl = 0; while (*(a+dl) != 0){ dl ++; } return dl; } Я правильно понял что с помощью dl адрес "а" увеличивается на 1 байт и когда "а" кончится вайл прекращается потому что у "а" больше нет адресов?
вайл прекращается не потому что нет адресов, а потому что значение по адресу a+dl равно 0(строки заканчиваются нулем).
vanban, если ваша строка не заканчивается нулем, то данный цыкл вам не поможет, для подсчёта длины есть функция strlen
Это понятно. Я отвечал Inten, перевел его код в более понятный ему формат. upd: Если строка не заканчивается нулем, то strlen() также не поможет. FYI.