答案:使用libcurl发送HTTP请求获取OpenWeatherMap API数据,结合nlohmann/json解析JSON响应,实现C++天气查询程序,需处理API密钥、网络错误及JSON字段存在性判断。

实现一个C++天气查询程序,关键在于调用网络API获取数据并解析返回的JSON内容。下面介绍如何使用HTTP请求获取天气信息,并用C++解析JSON响应。
常用的免费天气API有:
以OpenWeatherMap为例,查询城市天气的URL格式为:
http://api.openweathermap.org/data/2.5/weather?q=城市名&appid=你的API密钥&units=metric&lang=zh_cnC++标准库不直接支持网络操作,需借助第三方库。推荐使用libcurl发送HTTP请求。
立即学习“C++免费学习笔记(深入)”;
安装libcurl(Linux):
sudo apt-get install libcurl4-openssl-dev示例代码片段:
#include <curl/curl.h>static size_t WriteCallback(void contents, size_t size, size_t nmemb, std::string s) {
s->append((char)contents, size nmemb);
return size * nmemb;
}
std::string httpGet(const std::string& url) {
CURL* curl = curl_easy_init();
std::string response;
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return response;
}
C++没有内置JSON解析器,推荐使用轻量级库nlohmann/json。
添加头文件方式使用:
#include <json.hpp>解析天气数据示例:
std::string data = httpGet("http://api.openweathermap.org/data/2.5/weather?q=Beijing&appid=xxx&units=metric");if (j.contains("main")) {
double temp = j["main"]["temp"];
int humidity = j["main"]["humidity"];
std::cout << "温度: " << temp << "°C\n";
std::cout << "湿度: " << humidity << "%\n";
}
if (j.contains("weather")) {
std::string desc = j["weather"][0]["description"];
std::cout << "天气: " << desc << "\n";
}
程序基本流程:
注意点:
基本上就这些。配合libcurl和nlohmann/json,C++也能方便地实现网络数据获取与解析。
以上就是C++天气查询程序 网络API调用解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号