增加预处理配置
;BUILDING_LIBCURL;HTTP_ONLY
添加项目依赖项
libcurl.lib ws2_32.lib winmm.lib wldap32.lib
测试代码
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <string>
#include <curl/curl.h>
using namespace std;
using namespace std;
size_t Reply(void * ptr, size_t size, size_t nmemb, void * stream)
{
string* str = (string*)stream;
(*str).append((char*)ptr, size*nmemb);
return size*nmemb;
}
wstring str_cvt(const string& from_str, int cvt_type) {
int wstr_len = MultiByteToWideChar(cvt_type, 0, from_str.c_str(), -1, nullptr, 0);
wchar_t *wstr = new wchar_t[wstr_len + 1];
memset(wstr, 0, (wstr_len + 1) * sizeof(wchar_t));
MultiByteToWideChar(cvt_type, 0, from_str.c_str(), -1, wstr, wstr_len);
wstring ret_str(wstr); delete[] wstr;
return ret_str;
}
string str_cvt(const wstring& from_str, int cvt_type) {
int str_len = WideCharToMultiByte(cvt_type, 0, from_str.c_str(), -1, nullptr, 0, nullptr, nullptr);
char *str = new char[str_len + 1];
memset(str, 0, str_len + 1);
WideCharToMultiByte(cvt_type, 0, from_str.c_str(), -1, str, str_len, nullptr, nullptr);
string ret_str(str); delete[] str;
return ret_str;
}
int main()
{
string data; // 返回的内容
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.redu.com");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Reply);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
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();
cout << str_cvt(str_cvt(data, CP_UTF8), CP_ACP) << endl;
getchar();
return 0;
}