выводит текущую стоимость биткоина (Bitcoin) и эфириума (Ethereum) в долларах США

Ответить
ya
^-^
Сообщения: 3313
Зарегистрирован: 16 дек 2021, 19:56

выводит текущую стоимость биткоина (Bitcoin) и эфириума (Ethereum) в долларах США

Сообщение ya »

Ниже представлен готовый пример программы, которая делает запрос к API CoinGecko и выводит текущую стоимость биткоина (Bitcoin) и эфириума (Ethereum) в долларах США.

Подготовка и зависимости
Перед сборкой программы убедитесь, что у вас установлена библиотека libcurl.

В Linux (Ubuntu/Debian):

Код: Выделить всё

sudo apt-get install libcurl4-openssl-dev
В macOS (Homebrew):

Код: Выделить всё

brew install curl
В Windows: Можно использовать vcpkg или скачать готовые заголовки и библиотеки для MinGW/MSVC.

crypto_tracker.cpp

Код: Выделить всё

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

// Функция обратного вызова для записи полученных данных
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* userp) {
    size_t totalSize = size * nmemb;
    userp->append((char*)contents, totalSize);
    return totalSize;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    // Инициализация libcurl
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if (curl) {
        // Ссылка на публичный API CoinGecko для получения цен BTC и ETH в USD
        std::string url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd";

        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        
        // Некоторые API требуют User-Agent
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");

        // Выполнение запроса
        res = curl_easy_perform(curl);

        if (res != CURLE_OK) {
            std::cerr << "Ошибка запроса: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "--- Данные криптовалют ---" << std::endl;
            std::cout << readBuffer << std::endl;
        }

        // Очистка
        curl_easy_cleanup(curl);
    }

    curl_global_cleanup();
    return 0;
}

Компиляция и запуск

Код: Выделить всё

g++ crypto_tracker.cpp -o crypto_tracker -lcurl
./crypto_tracker
Пример вывода:

Код: Выделить всё

--- Данные криптовалют ---
{"bitcoin":{"usd":67420},"ethereum":{"usd":3520}}
Ответить