libcurl Ausgabe in variable anstelle der Textdatei

Nicht bekommen curlpp für C++ zu arbeiten, habe ich beschlossen, beginnen mit libcurl mit C statt (für jetzt). Völlig neu für C und C++, das ist immer ein wenig verwirrend. Ich bin mir auch nicht sicher, ob ich es halten kann C-und C++ - Funktionen abgesehen, aber soweit ich weiß, das ist Reine C.

Mit der Hilfe eines Freundes, habe ich es geschafft zu schreiben, der die Ausgabe (den Inhalt einer Seite, die curl abgeholt), um eine Textdatei, aber ich möchte es in einer string-Variablen statt, so kann ich die Leistung in anderen teilen des Codes. Ich konnte nur re-öffnen Sie die Textdatei und den Inhalt gelesen, aber das ist blöd, ich will halt in eine Datei schreiben und nur speichern, um eine string-variable sofort.

Der Funktion write

/* the function to invoke as the data received */
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

Den gesamten code

#include <iostream>
#include "curl/curl.h"

#include <stdio.h>
#include <stdlib.h>

#include <iostream>
using namespace std;

/* the function to invoke as the data recieved */
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

int main(int argc, char *argv[]) {

    CURL *curl;
    FILE *fp;
  CURLcode res;

  curl = curl_easy_init();

char outfilename[FILENAME_MAX] = "C:\\Users\\admin\\Downloads\\bbb.txt";

  if(curl) {
char *response = NULL;

        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.*hidden*.org/wp-test/lalala.txt");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
        fclose(fp);


  }
    return 0;
}

War ich auch in der Hoffnung, jemand könnte erarbeiten, wie diese Funktion verwendet wird, genau. Ich bin es gewohnt (aus php und vb.net) zu einer Funktion wie folgt:

function1(ThisIsAvariable,ThisIsAvariableToo)
{
    if ThisIsAvariable = something
    {
         Print "gogopowerrrangers" *append* ThisIsAvariableToo
    }
};

Welche dann verwendet werden wie:

function1(PassThisAsVariable1,PassThisAsVariable2);

Aber im obigen code die Funktion

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream)

Ist einfach so aufgerufen

write_data

Wie man hier sehen kann:

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);

Also, was ist all dies für?

(void *ptr, size_t size, size_t nmemb, FILE *stream)

Nicht Rollen automatisch "füllen" die oder ist C/C++ - anders arbeiten mit Funktionen als die meisten anderen Sprachen?

InformationsquelleAutor natli | 2011-11-05
Schreibe einen Kommentar