записать в map<std::string url,std::string html> .
Нужно как-то связать данные с url источника . В параметрах callback'a самому можно задавать только outstream через CURLOPT_WRITEDATA.
На сайте курла все multi-примеры пишут данные в фаил . Либо вообще не пишут , а только проверяют на success .
В общем подкиньте пример что-ли .
Здравствуйте, DrunkPilot, Вы писали:
DP>Третий день не могу сообразить как правильно сохранить результат curl_multi в контейнер . То есть из callback'a типа
... DP>записать в map<std::string url,std::string html> . DP>Нужно как-то связать данные с url источника . В параметрах callback'a самому можно задавать только outstream через CURLOPT_WRITEDATA. DP>На сайте курла все multi-примеры пишут данные в фаил . Либо вообще не пишут , а только проверяют на success . DP>В общем подкиньте пример что-ли .
Вместо файла можно писать в std::stringstream, а результат потом скопировать в строку:
Что, вот так, по-простому, привести stringstream к void* ? Фигассе типизация.
(Я в либкурл не играл, просто мимо шёл и удивился).
А что не взять какой-нибудь биндинг к С++
К>Что, вот так, по-простому, привести stringstream к void* ?
Не stringstream к void*, а указатель к void*.
К>Фигассе типизация. (Я в либкурл не играл, просто мимо шёл и удивился).
Ну, так вообще-то не только в curl сделано, а практически везде. Указатель на пользовательский контекст (который почему-то автор темы обозвал невразумительным именем outstream) передаётся в callback дополнительным параметром. Какому же ещё ему быть типу, если не void*? Ведь только пользовательский код знает как его интерпретировать, а самой библиотеке этот указатель вообще не нужен — она о нём и его типе ничего не знает и никак не использует, а лишь возвращает обратно.
Здравствуйте, watchmaker, Вы писали:
W>Ну, так вообще-то не только в curl сделано, а практически везде. Указатель на пользовательский контекст (который почему-то автор темы обозвал невразумительным именем outstream) передаётся в callback дополнительным параметром. Какому же ещё ему быть типу, если не void*? Ведь только пользовательский код знает как его интерпретировать, а самой библиотеке этот указатель вообще не нужен — она о нём и его типе ничего не знает и никак не использует, а лишь возвращает обратно.
А, если это пользовательский колбек, тогда да. (Я думал, что это что-то штатное-родное, которое пишет в файл).
Только нужно проследить, чтобы с той стороны void* приводился обратно строго к тому же stringstream'у; либо передавать в колбек (void*)(ostream*)&sstr и восстанавливать void* до ostream*