Форум программистов, компьютерный форум CyberForum.ru

Как разделить результат, возвращаемый Multi curl? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Посчитать количество столбцов в строке, разделённых произвольным количеством белых знаков http://www.cyberforum.ru/cpp-beginners/thread1240940.html
Необходимо посчитать количество столбцов в строке, разделённых произвольным количеством белых знаков (кроме знака конца стоки). Также прошу подсказать, как реализовать такую конструкцию символов(буфер? поток?), из который можно было бы читать словами (>>), но при этом каждое следующие читание читало бы следующее слово.
C++ Ссылка на временный объект Наткнулся тут в гугле на одну интересную тему. Как известно, данный код не соответствует стандарту, и не будет скомпилирован многими современными компиляторами: class A { }; void f( A & ) { } http://www.cyberforum.ru/cpp-beginners/thread1240939.html
Что значит слово void C++
изучаю функции,и наткнулся на: void DemonstrationFunction не могу понять,почему void,а не int.подскажите пожалуста Добавлено через 5 минут это случайно не "включить эту функцию в"?
C++ Создать класс, содержащий информацию о товарах
Обучаюсь. В чем проблема подскажите... ссылка - код
C++ Определить, простое число или нет http://www.cyberforum.ru/cpp-beginners/thread1240895.html
Программа должна говорить простое число или нет. Подскажите в чем ошибка кто знает. #include <cstdlib> #include <iostream> #include <math.h> using namespace std; int main() { int n;
C++ Подкиньте задачку, чтобы требовала прилично времени и обширных знаний языка Люди добрые, подкиньте какую-нибудь массивную типовую задачку, лучше чтобы требовала прилично времени и обширных знаний языка. подробнее

Показать сообщение отдельно
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
11.08.2014, 10:52     Как разделить результат, возвращаемый Multi curl?
1)Я вообще непонимаю зачем нужна функция

static int writer(char *data, size_t size, size_t nmemb, string *buffer)

как по мне делает какую-то ерунду.
2) На php курл реализован как-то лучше)) так как результат работы курла возвращает функция curl_exec аналог в с++ curl_easy_setopt который возвращает лишь статус((
ну да ладно вопрос в другом, ниже приведён код с использованием мультикурла, который парсит 5 страниц, и всё пихает в 1 стринг, а мне нужно впихнуть по отдельности в 5 разных строк(ну или массив строк) хз как поделить результат возвращаемый курлом, мб там что-то предусмотренно в данном случае? никто не в курсе?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "curl.h"
#include "dirent.h"
#pragma comment(lib,"curllib.lib")
#include <iostream>
#include <map>
#include <string>
#include <time.h>
//#include <boost/regex.hpp>
//#include <regex>
using namespace std;
 
 
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
    //переменная - результат, по умолчанию нулевая
    int result = 0;
    //проверяем буфер
    if (buffer != NULL)
    {
        //добавляем к буферу строки из data, в количестве nmemb
        buffer->append(data, size * nmemb);
        //вычисляем объем принятых данных
        result = size * nmemb;
    }
    //вовзращаем результат
    return result;
}
 
 
 
void main()  {
 
    //CURL *curl;
 
    CURL *curls[10];
    CURLM *multi_handle;
 
    CURLcode res;
    string result;
 
    string arr[5] = {"http://mh-proxy.ru/test/1.php?id=1","http://mh-proxy.ru/test/1.php?id=2","http://mh-proxy.ru/test/1.php?id=3","http://mh-proxy.ru/test/1.php?id=4","http://mh-proxy.ru/test/1.php?id=5"};
 
    for (int i = 0; i < 5; i++)
    {
        curls[i] = curl_easy_init();
 
 
 
        curl_easy_setopt(curls[i], CURLOPT_URL,  arr[i].c_str());
        curl_easy_setopt(curls[i], CURLOPT_HEADER, 0);
        curl_easy_setopt(curls[i], CURLOPT_SSL_VERIFYPEER, 0);
        curl_easy_setopt(curls[i], CURLOPT_SSL_VERIFYHOST, 0);
        curl_easy_setopt(curls[i], CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.8.131 Version/11.10");
        //указываем функцию обратного вызова для записи получаемых данных
        curl_easy_setopt(curls[i], CURLOPT_WRITEFUNCTION, writer);
        //указываем куда записывать принимаемые данные
        curl_easy_setopt(curls[i], CURLOPT_WRITEDATA, &result);
        //res = curl_easy_perform(curl);
        //curl_easy_cleanup(curl);
 
    }
 
 
    multi_handle = curl_multi_init();
 
    for (int i=0; i<5; i++){
        curl_multi_add_handle(multi_handle, curls[i]);
    }
    CURLMsg *msg;
    int still_running;
    int msgs_left;
 
    do
    {
        curl_multi_perform(multi_handle, &still_running);
    } while(still_running > 0);
     
 
curl_multi_cleanup(multi_handle);
 
  for (int i=0; i<5; i++)
      curl_easy_cleanup(curls[i]);
 
 
 
  cout<<result;
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru