在c ++中使用libcurl,写入文件

时间:2017-09-17 10:58:07

标签: php c++ curl libcurl

我刚开始使用curl。到目前为止,我已设法让我的程序获得响应并将其保存到文件/字符串中。我目前正在使用它来获取API的响应并处理它们。我将它用作市场解释来测试各种交易系统。为此,我计划将响应保存到tempfile中,处理该文件并将准备好使用的数据保存到另一个文件中。但是,无论是字符串还是文件,我的输出都是单行类型。

我想知道是否有办法让curl直接在文件中写入,因此它在行中“排序”。我的意思是,如果有这样的回应:

4stMay2017 - Gold - open price: 1150, close price:1200 
3stMay2017 - Gold - open price: 1060, close price:1170 
2stMay2017 - Gold - open price: 1100, close price:1050 
1stMay2017 - Gold - open price: 1000, close price:1100

这就是我希望我的文件看起来像这样的方式,所以我可以轻松地对新数据进行排序(因为市场是动态的,我要做的请求就像每分钟左右),而不是一切在一条线上。这样我就必须写一个单独的写算法,这会让我慢下来。

我的代码是什么样的:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <curl/curl.h>
#include <string>

using namespace std;
size_t size = 0;

size_t write_to_string(void *ptr, size_t size, size_t count, void *stream) {
    ((string*)stream)->append((char*)ptr, 0, size*count);
    return size*count;
}
int main() {
    CURL *curl;
    CURLcode res;
    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if (curl){
        string out = string("someURL");
        curl_easy_setopt(curl, CURLOPT_URL, out.c_str());
        string response;
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
        res = curl_easy_perform(curl);
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    return 0;
}

0 个答案:

没有答案