我刚开始使用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;
}