{"id":101188,"date":"2026-09-06T11:56:57","date_gmt":"2026-09-06T03:56:57","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/101188.html"},"modified":"2026-09-06T11:56:57","modified_gmt":"2026-09-06T03:56:57","slug":"c%e8%8e%b7%e5%8f%96%e5%a4%a9%e6%b0%94770","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/101188.html","title":{"rendered":"|C++\u83b7\u53d6\u5929\u6c14|770+"},"content":{"rendered":"<p>\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;<\/p>\n<p>\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;<\/p>\n<p>\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;&#xff01;<\/p>\n<p>\u57ce\u5e02-&gt;\u7ecf\u7eac\u5ea6\u90e8\u5206\u7531AI\u5b8c\u6210&#xff08;\u592a\u591a\u4e86&#xff09;<\/p>\n<\/p>\n<p>qwq<\/p>\n<p>\/\/ \u5929\u6c14\u67e5\u8be2&#xff08;Windows \/ MinGW \/ RedPanda-CPP&#xff09;<br \/>\n\/\/ \u7279\u70b9&#xff1a;\u5185\u7f6e\u5168\u56fd 305 \u4e2a\u5730\u7ea7\u5e02\u5750\u6807\u8868&#xff0c;\u57ce\u5e02\u2192\u5750\u6807\u79bb\u7ebf\u5b8c\u6210&#xff0c;\u4e0d\u4f9d\u8d56\u5730\u7406\u7f16\u7801\u63a5\u53e3<br \/>\n\/\/ \u6570\u636e\u6e90&#xff1a;\u9ad8\u5fb7\u5730\u56fe Web\u670d\u52a1&#xff08;\u4e2d\u56fd\u6c14\u8c61\u5c40\u5b9e\u6d4b&#xff0c;\u9700 Key&#xff09;&#xff1b;\u672a\u586b Key \u7528 Open-Meteo \u515c\u5e95<br \/>\n\/\/ \u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp<\/p>\n<p>#include &lt;windows.h&gt;<br \/>\n#include &lt;winhttp.h&gt;<br \/>\n#include &lt;iostream&gt;<br \/>\n#include &lt;string&gt;<br \/>\n#include &lt;vector&gt;<br \/>\n#include &lt;cstdlib&gt;<br \/>\n#include &lt;cstdio&gt;<br \/>\n#include &lt;cstring&gt;<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n\/\/  \u2605\u2605\u2605 \u9ad8\u5fb7 Key&#xff08;\u7559\u7a7a\u5219\u7528 Open-Meteo \u515c\u5e95&#xff0c;\u4f46\u6570\u503c\u53ef\u80fd\u5dee 1~3\u00b0C&#xff09;\u2605\u2605\u2605<br \/>\n\/\/  \u7533\u8bf7&#xff1a;console.amap.com \u2192 \u5e94\u7528\u7ba1\u7406 \u2192 \u521b\u5efa\u65b0\u5e94\u7528 \u2192 \u6dfb\u52a0Key \u2192 \u9009\u300cWeb\u670d\u52a1\u300d<br \/>\n\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic const std::string AMAP_KEY &#061; &#034;&#034;;<br \/>\n\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5185\u7f6e\u57ce\u5e02\u5750\u6807\u8868&#xff08;\u79bb\u7ebf&#xff09;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstruct CityInfo { const char* name; const char* adcode; double lat; double lon; };<br \/>\nstatic const CityInfo CITY_TABLE[] &#061; {<br \/>\n{&#034;\u5317\u4eac&#034;, &#034;110000&#034;, 39.9042, 116.4074},<br \/>\n{&#034;\u4e0a\u6d77&#034;, &#034;310000&#034;, 31.2304, 121.4737},<br \/>\n{&#034;\u5929\u6d25&#034;, &#034;120000&#034;, 39.3434, 117.3616},<br \/>\n{&#034;\u91cd\u5e86&#034;, &#034;500000&#034;, 29.5630, 106.5516},<br \/>\n{&#034;\u77f3\u5bb6\u5e84&#034;, &#034;130100&#034;, 38.0428, 114.5149},<br \/>\n{&#034;\u5510\u5c71&#034;, &#034;130200&#034;, 39.6304, 118.1804},<br \/>\n{&#034;\u79e6\u7687\u5c9b&#034;, &#034;130300&#034;, 39.9354, 119.6005},<br \/>\n{&#034;\u90af\u90f8&#034;, &#034;130400&#034;, 36.6256, 114.5391},<br \/>\n{&#034;\u90a2\u53f0&#034;, &#034;130500&#034;, 37.0682, 114.5049},<br \/>\n{&#034;\u4fdd\u5b9a&#034;, &#034;130600&#034;, 38.8740, 115.4646},<br \/>\n{&#034;\u5f20\u5bb6\u53e3&#034;, &#034;130700&#034;, 40.7688, 114.8865},<br \/>\n{&#034;\u627f\u5fb7&#034;, &#034;130800&#034;, 40.9516, 117.9634},<br \/>\n{&#034;\u6ca7\u5dde&#034;, &#034;130900&#034;, 38.3037, 116.8388},<br \/>\n{&#034;\u5eca\u574a&#034;, &#034;131000&#034;, 39.5379, 116.6835},<br \/>\n{&#034;\u8861\u6c34&#034;, &#034;131100&#034;, 37.7392, 115.6690},<br \/>\n{&#034;\u592a\u539f&#034;, &#034;140100&#034;, 37.8706, 112.5489},<br \/>\n{&#034;\u5927\u540c&#034;, &#034;140200&#034;, 40.0903, 113.3001},<br \/>\n{&#034;\u9633\u6cc9&#034;, &#034;140300&#034;, 37.8576, 113.5806},<br \/>\n{&#034;\u957f\u6cbb&#034;, &#034;140400&#034;, 36.1954, 113.1163},<br \/>\n{&#034;\u664b\u57ce&#034;, &#034;140500&#034;, 35.4907, 112.8513},<br \/>\n{&#034;\u6714\u5dde&#034;, &#034;140600&#034;, 39.3315, 112.4329},<br \/>\n{&#034;\u664b\u4e2d&#034;, &#034;140700&#034;, 37.6870, 112.7529},<br \/>\n{&#034;\u8fd0\u57ce&#034;, &#034;140800&#034;, 35.0263, 111.0038},<br \/>\n{&#034;\u5ffb\u5dde&#034;, &#034;140900&#034;, 38.4177, 112.7343},<br \/>\n{&#034;\u4e34\u6c7e&#034;, &#034;141000&#034;, 36.0880, 111.5190},<br \/>\n{&#034;\u5415\u6881&#034;, &#034;141100&#034;, 37.5187, 111.1441},<br \/>\n{&#034;\u547c\u548c\u6d69\u7279&#034;, &#034;150100&#034;, 40.8414, 111.7519},<br \/>\n{&#034;\u5305\u5934&#034;, &#034;150200&#034;, 40.6574, 109.8405},<br \/>\n{&#034;\u4e4c\u6d77&#034;, &#034;150300&#034;, 39.6549, 106.7955},<br \/>\n{&#034;\u8d64\u5cf0&#034;, &#034;150400&#034;, 42.2580, 118.9560},<br \/>\n{&#034;\u901a\u8fbd&#034;, &#034;150500&#034;, 43.6537, 122.2437},<br \/>\n{&#034;\u9102\u5c14\u591a\u65af&#034;, &#034;150600&#034;, 39.6084, 109.7805},<br \/>\n{&#034;\u547c\u4f26\u8d1d\u5c14&#034;, &#034;150700&#034;, 49.2150, 119.7660},<br \/>\n{&#034;\u5df4\u5f66\u6dd6\u5c14&#034;, &#034;150800&#034;, 40.7495, 107.3902},<br \/>\n{&#034;\u4e4c\u5170\u5bdf\u5e03&#034;, &#034;150900&#034;, 41.0214, 113.1323},<br \/>\n{&#034;\u6c88\u9633&#034;, &#034;210100&#034;, 41.8057, 123.4315},<br \/>\n{&#034;\u5927\u8fde&#034;, &#034;210200&#034;, 38.9140, 121.6147},<br \/>\n{&#034;\u978d\u5c71&#034;, &#034;210300&#034;, 41.1082, 122.9956},<br \/>\n{&#034;\u629a\u987a&#034;, &#034;210400&#034;, 41.8803, 123.9573},<br \/>\n{&#034;\u672c\u6eaa&#034;, &#034;210500&#034;, 41.2947, 123.7604},<br \/>\n{&#034;\u4e39\u4e1c&#034;, &#034;210600&#034;, 40.1245, 124.3924},<br \/>\n{&#034;\u9526\u5dde&#034;, &#034;210700&#034;, 41.1075, 121.1279},<br \/>\n{&#034;\u8425\u53e3&#034;, &#034;210800&#034;, 40.6658, 122.2344},<br \/>\n{&#034;\u961c\u65b0&#034;, &#034;210900&#034;, 42.0192, 121.6714},<br \/>\n{&#034;\u8fbd\u9633&#034;, &#034;211000&#034;, 41.2693, 123.1729},<br \/>\n{&#034;\u76d8\u9526&#034;, &#034;211100&#034;, 41.1245, 122.0706},<br \/>\n{&#034;\u94c1\u5cad&#034;, &#034;211200&#034;, 42.2841, 123.8346},<br \/>\n{&#034;\u671d\u9633&#034;, &#034;211300&#034;, 41.5745, 120.4501},<br \/>\n{&#034;\u846b\u82a6\u5c9b&#034;, &#034;211400&#034;, 40.7111, 120.8373},<br \/>\n{&#034;\u957f\u6625&#034;, &#034;220100&#034;, 43.8171, 125.3235},<br \/>\n{&#034;\u5409\u6797&#034;, &#034;220200&#034;, 43.8409, 126.5528},<br \/>\n{&#034;\u56db\u5e73&#034;, &#034;220300&#034;, 43.1706, 124.3480},<br \/>\n{&#034;\u8fbd\u6e90&#034;, &#034;220400&#034;, 42.8895, 125.1434},<br \/>\n{&#034;\u901a\u5316&#034;, &#034;220500&#034;, 41.7281, 125.9395},<br \/>\n{&#034;\u767d\u5c71&#034;, &#034;220600&#034;, 41.9410, 126.4200},<br \/>\n{&#034;\u677e\u539f&#034;, &#034;220700&#034;, 45.1420, 124.8232},<br \/>\n{&#034;\u767d\u57ce&#034;, &#034;220800&#034;, 45.6193, 122.8409},<br \/>\n{&#034;\u54c8\u5c14\u6ee8&#034;, &#034;230100&#034;, 45.8038, 126.5349},<br \/>\n{&#034;\u9f50\u9f50\u54c8\u5c14&#034;, &#034;230200&#034;, 47.3427, 123.9188},<br \/>\n{&#034;\u9e21\u897f&#034;, &#034;230300&#034;, 45.2995, 130.9508},<br \/>\n{&#034;\u9e64\u5c97&#034;, &#034;230400&#034;, 47.3326, 130.2834},<br \/>\n{&#034;\u53cc\u9e2d\u5c71&#034;, &#034;230500&#034;, 46.6461, 131.1576},<br \/>\n{&#034;\u5927\u5e86&#034;, &#034;230600&#034;, 46.5883, 125.1100},<br \/>\n{&#034;\u4f0a\u6625&#034;, &#034;230700&#034;, 47.7261, 128.8994},<br \/>\n{&#034;\u4f73\u6728\u65af&#034;, &#034;230800&#034;, 46.7969, 130.3177},<br \/>\n{&#034;\u4e03\u53f0\u6cb3&#034;, &#034;230900&#034;, 45.7712, 131.0034},<br \/>\n{&#034;\u7261\u4e39\u6c5f&#034;, &#034;231000&#034;, 44.5856, 129.6206},<br \/>\n{&#034;\u9ed1\u6cb3&#034;, &#034;231100&#034;, 50.2494, 127.5284},<br \/>\n{&#034;\u7ee5\u5316&#034;, &#034;231200&#034;, 46.6410, 126.9826},<br \/>\n{&#034;\u5357\u4eac&#034;, &#034;320100&#034;, 32.0603, 118.7969},<br \/>\n{&#034;\u65e0\u9521&#034;, &#034;320200&#034;, 31.4912, 120.3119},<br \/>\n{&#034;\u5f90\u5dde&#034;, &#034;320300&#034;, 34.2618, 117.1588},<br \/>\n{&#034;\u5e38\u5dde&#034;, &#034;320400&#034;, 31.8113, 119.9740},<br \/>\n{&#034;\u82cf\u5dde&#034;, &#034;320500&#034;, 31.2989, 120.5853},<br \/>\n{&#034;\u5357\u901a&#034;, &#034;320600&#034;, 31.9802, 120.8943},<br \/>\n{&#034;\u8fde\u4e91\u6e2f&#034;, &#034;320700&#034;, 34.5967, 119.2216},<br \/>\n{&#034;\u6dee\u5b89&#034;, &#034;320800&#034;, 33.6104, 119.0153},<br \/>\n{&#034;\u76d0\u57ce&#034;, &#034;320900&#034;, 33.3470, 120.1636},<br \/>\n{&#034;\u626c\u5dde&#034;, &#034;321000&#034;, 32.3931, 119.4215},<br \/>\n{&#034;\u9547\u6c5f&#034;, &#034;321100&#034;, 32.1885, 119.4528},<br \/>\n{&#034;\u6cf0\u5dde&#034;, &#034;321200&#034;, 32.4564, 119.9228},<br \/>\n{&#034;\u5bbf\u8fc1&#034;, &#034;321300&#034;, 33.9631, 118.2753},<br \/>\n{&#034;\u676d\u5dde&#034;, &#034;330100&#034;, 30.2741, 120.1551},<br \/>\n{&#034;\u5b81\u6ce2&#034;, &#034;330200&#034;, 29.8683, 121.5440},<br \/>\n{&#034;\u6e29\u5dde&#034;, &#034;330300&#034;, 27.9949, 120.6994},<br \/>\n{&#034;\u5609\u5174&#034;, &#034;330400&#034;, 30.7520, 120.7557},<br \/>\n{&#034;\u6e56\u5dde&#034;, &#034;330500&#034;, 30.8939, 120.0877},<br \/>\n{&#034;\u7ecd\u5174&#034;, &#034;330600&#034;, 30.0303, 120.5804},<br \/>\n{&#034;\u91d1\u534e&#034;, &#034;330700&#034;, 29.0789, 119.6495},<br \/>\n{&#034;\u8862\u5dde&#034;, &#034;330800&#034;, 28.9416, 118.8737},<br \/>\n{&#034;\u821f\u5c71&#034;, &#034;330900&#034;, 30.0193, 122.1070},<br \/>\n{&#034;\u53f0\u5dde&#034;, &#034;331000&#034;, 28.6614, 121.4207},<br \/>\n{&#034;\u4e3d\u6c34&#034;, &#034;331100&#034;, 28.4519, 119.9218},<br \/>\n{&#034;\u5408\u80a5&#034;, &#034;340100&#034;, 31.8206, 117.2272},<br \/>\n{&#034;\u829c\u6e56&#034;, &#034;340200&#034;, 31.3494, 118.3758},<br \/>\n{&#034;\u868c\u57e0&#034;, &#034;340300&#034;, 32.9167, 117.3892},<br \/>\n{&#034;\u6dee\u5357&#034;, &#034;340400&#034;, 32.6250, 117.0200},<br \/>\n{&#034;\u9a6c\u978d\u5c71&#034;, &#034;340500&#034;, 31.6707, 118.5079},<br \/>\n{&#034;\u6dee\u5317&#034;, &#034;340600&#034;, 33.9500, 116.7900},<br \/>\n{&#034;\u94dc\u9675&#034;, &#034;340700&#034;, 30.9455, 117.8120},<br \/>\n{&#034;\u5b89\u5e86&#034;, &#034;340800&#034;, 30.5089, 117.0435},<br \/>\n{&#034;\u9ec4\u5c71&#034;, &#034;341000&#034;, 29.7147, 118.3376},<br \/>\n{&#034;\u961c\u9633&#034;, &#034;341200&#034;, 32.8950, 115.8200},<br \/>\n{&#034;\u5bbf\u5dde&#034;, &#034;341300&#034;, 33.6488, 116.9840},<br \/>\n{&#034;\u6ec1\u5dde&#034;, &#034;341100&#034;, 32.3033, 118.3163},<br \/>\n{&#034;\u516d\u5b89&#034;, &#034;341500&#034;, 31.7520, 116.5070},<br \/>\n{&#034;\u4eb3\u5dde&#034;, &#034;341600&#034;, 33.8720, 115.7800},<br \/>\n{&#034;\u6c60\u5dde&#034;, &#034;341700&#034;, 30.6600, 117.4900},<br \/>\n{&#034;\u5ba3\u57ce&#034;, &#034;341800&#034;, 30.9455, 118.7580},<br \/>\n{&#034;\u798f\u5dde&#034;, &#034;350100&#034;, 26.0745, 119.2965},<br \/>\n{&#034;\u53a6\u95e8&#034;, &#034;350200&#034;, 24.4798, 118.0894},<br \/>\n{&#034;\u8386\u7530&#034;, &#034;350300&#034;, 25.4310, 119.0075},<br \/>\n{&#034;\u4e09\u660e&#034;, &#034;350400&#034;, 26.2654, 117.6218},<br \/>\n{&#034;\u6cc9\u5dde&#034;, &#034;350500&#034;, 24.8740, 118.6757},<br \/>\n{&#034;\u6f33\u5dde&#034;, &#034;350600&#034;, 24.5135, 117.6475},<br \/>\n{&#034;\u5357\u5e73&#034;, &#034;350700&#034;, 26.6363, 118.1779},<br \/>\n{&#034;\u9f99\u5ca9&#034;, &#034;350800&#034;, 25.0753, 117.0170},<br \/>\n{&#034;\u5b81\u5fb7&#034;, &#034;350900&#034;, 26.6650, 119.5460},<br \/>\n{&#034;\u5357\u660c&#034;, &#034;360100&#034;, 28.6820, 115.8579},<br \/>\n{&#034;\u666f\u5fb7\u9547&#034;, &#034;360200&#034;, 29.2925, 117.2084},<br \/>\n{&#034;\u840d\u4e61&#034;, &#034;360300&#034;, 27.6222, 113.8532},<br \/>\n{&#034;\u4e5d\u6c5f&#034;, &#034;360400&#034;, 29.7120, 115.9928},<br \/>\n{&#034;\u65b0\u4f59&#034;, &#034;360500&#034;, 27.8165, 114.9274},<br \/>\n{&#034;\u9e70\u6f6d&#034;, &#034;360600&#034;, 28.2380, 117.0700},<br \/>\n{&#034;\u8d63\u5dde&#034;, &#034;360700&#034;, 25.8295, 114.9400},<br \/>\n{&#034;\u5409\u5b89&#034;, &#034;360800&#034;, 27.1167, 114.9750},<br \/>\n{&#034;\u5b9c\u6625&#034;, &#034;360900&#034;, 27.8114, 114.4056},<br \/>\n{&#034;\u629a\u5dde&#034;, &#034;361000&#034;, 27.9839, 116.3583},<br \/>\n{&#034;\u4e0a\u9976&#034;, &#034;361100&#034;, 28.4544, 117.9700},<br \/>\n{&#034;\u6d4e\u5357&#034;, &#034;370100&#034;, 36.6512, 117.1201},<br \/>\n{&#034;\u9752\u5c9b&#034;, &#034;370200&#034;, 36.0671, 120.3826},<br \/>\n{&#034;\u6dc4\u535a&#034;, &#034;370300&#034;, 36.8135, 118.0550},<br \/>\n{&#034;\u67a3\u5e84&#034;, &#034;370400&#034;, 34.8100, 117.3200},<br \/>\n{&#034;\u4e1c\u8425&#034;, &#034;370500&#034;, 37.4347, 118.6644},<br \/>\n{&#034;\u70df\u53f0&#034;, &#034;370600&#034;, 37.4638, 121.4479},<br \/>\n{&#034;\u6f4d\u574a&#034;, &#034;370700&#034;, 36.7069, 119.1617},<br \/>\n{&#034;\u6d4e\u5b81&#034;, &#034;370800&#034;, 35.4150, 116.5870},<br \/>\n{&#034;\u6cf0\u5b89&#034;, &#034;370900&#034;, 36.2000, 117.0900},<br \/>\n{&#034;\u5a01\u6d77&#034;, &#034;371000&#034;, 37.5133, 122.1200},<br \/>\n{&#034;\u65e5\u7167&#034;, &#034;371100&#034;, 35.4200, 119.5300},<br \/>\n{&#034;\u4e34\u6c82&#034;, &#034;371300&#034;, 35.1046, 118.3564},<br \/>\n{&#034;\u5fb7\u5dde&#034;, &#034;371400&#034;, 37.4341, 116.3570},<br \/>\n{&#034;\u804a\u57ce&#034;, &#034;371500&#034;, 36.4570, 115.9850},<br \/>\n{&#034;\u6ee8\u5dde&#034;, &#034;371600&#034;, 37.3833, 117.9700},<br \/>\n{&#034;\u83cf\u6cfd&#034;, &#034;371700&#034;, 35.2400, 115.4800},<br \/>\n{&#034;\u90d1\u5dde&#034;, &#034;410100&#034;, 34.7466, 113.6254},<br \/>\n{&#034;\u5f00\u5c01&#034;, &#034;410200&#034;, 34.7973, 114.3073},<br \/>\n{&#034;\u6d1b\u9633&#034;, &#034;410300&#034;, 34.6197, 112.4540},<br \/>\n{&#034;\u5e73\u9876\u5c71&#034;, &#034;410400&#034;, 33.7350, 113.1840},<br \/>\n{&#034;\u5b89\u9633&#034;, &#034;410500&#034;, 36.0990, 114.3980},<br \/>\n{&#034;\u9e64\u58c1&#034;, &#034;410600&#034;, 35.7480, 114.2920},<br \/>\n{&#034;\u65b0\u4e61&#034;, &#034;410700&#034;, 35.3020, 113.9260},<br \/>\n{&#034;\u7126\u4f5c&#034;, &#034;410800&#034;, 35.2150, 113.2350},<br \/>\n{&#034;\u6fee\u9633&#034;, &#034;410900&#034;, 35.7620, 115.0280},<br \/>\n{&#034;\u8bb8\u660c&#034;, &#034;411000&#034;, 34.0360, 113.8520},<br \/>\n{&#034;\u6f2f\u6cb3&#034;, &#034;411100&#034;, 33.5850, 114.0210},<br \/>\n{&#034;\u4e09\u95e8\u5ce1&#034;, &#034;411200&#034;, 34.7770, 111.1940},<br \/>\n{&#034;\u5357\u9633&#034;, &#034;411300&#034;, 33.0000, 112.5290},<br \/>\n{&#034;\u5546\u4e18&#034;, &#034;411400&#034;, 34.4150, 115.6500},<br \/>\n{&#034;\u4fe1\u9633&#034;, &#034;411500&#034;, 32.1470, 114.0920},<br \/>\n{&#034;\u5468\u53e3&#034;, &#034;411600&#034;, 33.6250, 114.6490},<br \/>\n{&#034;\u9a7b\u9a6c\u5e97&#034;, &#034;411700&#034;, 32.9800, 114.0220},<br \/>\n{&#034;\u6b66\u6c49&#034;, &#034;420100&#034;, 30.5928, 114.3055},<br \/>\n{&#034;\u9ec4\u77f3&#034;, &#034;420200&#034;, 30.2024, 115.0361},<br \/>\n{&#034;\u5341\u5830&#034;, &#034;420300&#034;, 32.6469, 110.7889},<br \/>\n{&#034;\u5b9c\u660c&#034;, &#034;420500&#034;, 30.6917, 111.2864},<br \/>\n{&#034;\u8944\u9633&#034;, &#034;420600&#034;, 32.0428, 112.1441},<br \/>\n{&#034;\u9102\u5dde&#034;, &#034;420700&#034;, 30.5496, 114.8918},<br \/>\n{&#034;\u8346\u95e8&#034;, &#034;420800&#034;, 30.9884, 112.2040},<br \/>\n{&#034;\u5b5d\u611f&#034;, &#034;420900&#034;, 30.9255, 113.9211},<br \/>\n{&#034;\u8346\u5dde&#034;, &#034;421000&#034;, 30.3349, 112.2385},<br \/>\n{&#034;\u9ec4\u5188&#034;, &#034;421100&#034;, 30.4535, 114.8790},<br \/>\n{&#034;\u54b8\u5b81&#034;, &#034;421200&#034;, 29.8856, 114.3042},<br \/>\n{&#034;\u968f\u5dde&#034;, &#034;421300&#034;, 31.7179, 113.3827},<br \/>\n{&#034;\u6069\u65bd&#034;, &#034;422800&#034;, 30.2719, 109.4892},<br \/>\n{&#034;\u957f\u6c99&#034;, &#034;430100&#034;, 28.2282, 112.9388},<br \/>\n{&#034;\u682a\u6d32&#034;, &#034;430200&#034;, 27.8274, 113.1325},<br \/>\n{&#034;\u6e58\u6f6d&#034;, &#034;430300&#034;, 27.8272, 112.9440},<br \/>\n{&#034;\u8861\u9633&#034;, &#034;430400&#034;, 26.8934, 112.5720},<br \/>\n{&#034;\u90b5\u9633&#034;, &#034;430500&#034;, 27.2477, 111.4692},<br \/>\n{&#034;\u5cb3\u9633&#034;, &#034;430600&#034;, 29.3574, 113.1288},<br \/>\n{&#034;\u5e38\u5fb7&#034;, &#034;430700&#034;, 29.0320, 111.7030},<br \/>\n{&#034;\u5f20\u5bb6\u754c&#034;, &#034;430800&#034;, 29.1170, 110.4790},<br \/>\n{&#034;\u76ca\u9633&#034;, &#034;430900&#034;, 28.5700, 112.3500},<br \/>\n{&#034;\u90f4\u5dde&#034;, &#034;431000&#034;, 25.7740, 113.0200},<br \/>\n{&#034;\u6c38\u5dde&#034;, &#034;431100&#034;, 26.4210, 111.6080},<br \/>\n{&#034;\u6000\u5316&#034;, &#034;431200&#034;, 27.5680, 110.0000},<br \/>\n{&#034;\u5a04\u5e95&#034;, &#034;431300&#034;, 27.7270, 111.9980},<br \/>\n{&#034;\u5e7f\u5dde&#034;, &#034;440100&#034;, 23.1291, 113.2644},<br \/>\n{&#034;\u6df1\u5733&#034;, &#034;440300&#034;, 22.5431, 114.0579},<br \/>\n{&#034;\u73e0\u6d77&#034;, &#034;440400&#034;, 22.2248, 113.5548},<br \/>\n{&#034;\u6c55\u5934&#034;, &#034;440500&#034;, 23.3541, 116.6820},<br \/>\n{&#034;\u4f5b\u5c71&#034;, &#034;440600&#034;, 23.0215, 113.1217},<br \/>\n{&#034;\u97f6\u5173&#034;, &#034;440200&#034;, 24.8100, 113.5910},<br \/>\n{&#034;\u6e5b\u6c5f&#034;, &#034;440800&#034;, 21.2710, 110.3590},<br \/>\n{&#034;\u8087\u5e86&#034;, &#034;441200&#034;, 23.0470, 112.4650},<br \/>\n{&#034;\u6c5f\u95e8&#034;, &#034;440700&#034;, 22.5790, 113.0850},<br \/>\n{&#034;\u8302\u540d&#034;, &#034;440900&#034;, 21.6630, 110.9250},<br \/>\n{&#034;\u60e0\u5dde&#034;, &#034;441300&#034;, 23.1110, 114.4120},<br \/>\n{&#034;\u6885\u5dde&#034;, &#034;441400&#034;, 24.2880, 116.1260},<br \/>\n{&#034;\u6c55\u5c3e&#034;, &#034;441500&#034;, 22.7860, 115.3750},<br \/>\n{&#034;\u6cb3\u6e90&#034;, &#034;441600&#034;, 23.7430, 114.6970},<br \/>\n{&#034;\u9633\u6c5f&#034;, &#034;441700&#034;, 21.8580, 111.9820},<br \/>\n{&#034;\u6e05\u8fdc&#034;, &#034;441800&#034;, 23.6840, 113.0490},<br \/>\n{&#034;\u4e1c\u839e&#034;, &#034;441900&#034;, 23.0207, 113.7518},<br \/>\n{&#034;\u4e2d\u5c71&#034;, &#034;442000&#034;, 22.5210, 113.3920},<br \/>\n{&#034;\u6f6e\u5dde&#034;, &#034;445100&#034;, 23.6620, 116.6220},<br \/>\n{&#034;\u63ed\u9633&#034;, &#034;445200&#034;, 23.5530, 116.3730},<br \/>\n{&#034;\u4e91\u6d6e&#034;, &#034;445300&#034;, 22.9150, 112.0450},<br \/>\n{&#034;\u5357\u5b81&#034;, &#034;450100&#034;, 22.8170, 108.3665},<br \/>\n{&#034;\u67f3\u5dde&#034;, &#034;450200&#034;, 24.3260, 109.4280},<br \/>\n{&#034;\u6842\u6797&#034;, &#034;450300&#034;, 25.2736, 110.2900},<br \/>\n{&#034;\u68a7\u5dde&#034;, &#034;450400&#034;, 23.4760, 111.2790},<br \/>\n{&#034;\u5317\u6d77&#034;, &#034;450500&#034;, 21.4730, 109.1200},<br \/>\n{&#034;\u9632\u57ce\u6e2f&#034;, &#034;450600&#034;, 21.6120, 108.3520},<br \/>\n{&#034;\u94a6\u5dde&#034;, &#034;450700&#034;, 21.9810, 108.6240},<br \/>\n{&#034;\u8d35\u6e2f&#034;, &#034;450800&#034;, 23.1110, 109.5990},<br \/>\n{&#034;\u7389\u6797&#034;, &#034;450900&#034;, 22.6540, 110.1810},<br \/>\n{&#034;\u767e\u8272&#034;, &#034;451000&#034;, 23.9010, 106.6180},<br \/>\n{&#034;\u8d3a\u5dde&#034;, &#034;451100&#034;, 24.4130, 111.5530},<br \/>\n{&#034;\u6cb3\u6c60&#034;, &#034;451200&#034;, 24.6940, 108.0850},<br \/>\n{&#034;\u6765\u5bbe&#034;, &#034;451300&#034;, 23.7360, 109.2290},<br \/>\n{&#034;\u5d07\u5de6&#034;, &#034;451400&#034;, 22.4080, 107.3570},<br \/>\n{&#034;\u6d77\u53e3&#034;, &#034;460100&#034;, 20.0444, 110.1999},<br \/>\n{&#034;\u4e09\u4e9a&#034;, &#034;460200&#034;, 18.2528, 109.5119},<br \/>\n{&#034;\u510b\u5dde&#034;, &#034;460400&#034;, 19.5210, 109.5800},<br \/>\n{&#034;\u6210\u90fd&#034;, &#034;510100&#034;, 30.5728, 104.0668},<br \/>\n{&#034;\u81ea\u8d21&#034;, &#034;510300&#034;, 29.3390, 104.7780},<br \/>\n{&#034;\u6500\u679d\u82b1&#034;, &#034;510400&#034;, 26.5820, 101.7180},<br \/>\n{&#034;\u6cf8\u5dde&#034;, &#034;510500&#034;, 28.8720, 105.4420},<br \/>\n{&#034;\u5fb7\u9633&#034;, &#034;510600&#034;, 31.1270, 104.3980},<br \/>\n{&#034;\u7ef5\u9633&#034;, &#034;510700&#034;, 31.4670, 104.6800},<br \/>\n{&#034;\u5e7f\u5143&#034;, &#034;510800&#034;, 32.4350, 105.8430},<br \/>\n{&#034;\u9042\u5b81&#034;, &#034;510900&#034;, 30.5330, 105.5900},<br \/>\n{&#034;\u5185\u6c5f&#034;, &#034;511000&#034;, 29.5850, 105.0670},<br \/>\n{&#034;\u4e50\u5c71&#034;, &#034;511100&#034;, 29.5520, 103.7660},<br \/>\n{&#034;\u5357\u5145&#034;, &#034;511300&#034;, 30.8370, 106.1100},<br \/>\n{&#034;\u7709\u5c71&#034;, &#034;511400&#034;, 30.0490, 103.8480},<br \/>\n{&#034;\u5b9c\u5bbe&#034;, &#034;511500&#034;, 28.7510, 104.6280},<br \/>\n{&#034;\u5e7f\u5b89&#034;, &#034;511600&#034;, 30.4560, 106.6330},<br \/>\n{&#034;\u8fbe\u5dde&#034;, &#034;511700&#034;, 31.2090, 107.5020},<br \/>\n{&#034;\u96c5\u5b89&#034;, &#034;511800&#034;, 29.9830, 103.0050},<br \/>\n{&#034;\u5df4\u4e2d&#034;, &#034;511900&#034;, 31.8580, 106.7480},<br \/>\n{&#034;\u8d44\u9633&#034;, &#034;512000&#034;, 30.1220, 104.6410},<br \/>\n{&#034;\u8d35\u9633&#034;, &#034;520100&#034;, 26.6470, 106.6302},<br \/>\n{&#034;\u516d\u76d8\u6c34&#034;, &#034;520200&#034;, 26.5930, 104.8310},<br \/>\n{&#034;\u9075\u4e49&#034;, &#034;520300&#034;, 27.7250, 106.9270},<br \/>\n{&#034;\u5b89\u987a&#034;, &#034;520400&#034;, 26.2530, 105.9460},<br \/>\n{&#034;\u6bd5\u8282&#034;, &#034;520500&#034;, 27.3020, 105.2830},<br \/>\n{&#034;\u94dc\u4ec1&#034;, &#034;520600&#034;, 27.7170, 109.1870},<br \/>\n{&#034;\u6606\u660e&#034;, &#034;530100&#034;, 24.8801, 102.8329},<br \/>\n{&#034;\u66f2\u9756&#034;, &#034;530300&#034;, 25.5010, 103.7950},<br \/>\n{&#034;\u7389\u6eaa&#034;, &#034;530400&#034;, 24.3520, 102.5420},<br \/>\n{&#034;\u4fdd\u5c71&#034;, &#034;530500&#034;, 25.1210, 99.1670},<br \/>\n{&#034;\u662d\u901a&#034;, &#034;530600&#034;, 27.3380, 103.7170},<br \/>\n{&#034;\u4e3d\u6c5f&#034;, &#034;530700&#034;, 26.8550, 100.2330},<br \/>\n{&#034;\u666e\u6d31&#034;, &#034;530800&#034;, 22.7850, 100.9720},<br \/>\n{&#034;\u4e34\u6ca7&#034;, &#034;530900&#034;, 23.8870, 100.0890},<br \/>\n{&#034;\u62c9\u8428&#034;, &#034;540100&#034;, 29.6520, 91.1721},<br \/>\n{&#034;\u65e5\u5580\u5219&#034;, &#034;540200&#034;, 29.2670, 88.8790},<br \/>\n{&#034;\u660c\u90fd&#034;, &#034;540300&#034;, 31.1360, 97.1780},<br \/>\n{&#034;\u6797\u829d&#034;, &#034;540400&#034;, 29.6490, 94.3620},<br \/>\n{&#034;\u897f\u5b89&#034;, &#034;610100&#034;, 34.3416, 108.9398},<br \/>\n{&#034;\u94dc\u5ddd&#034;, &#034;610200&#034;, 34.8960, 108.9450},<br \/>\n{&#034;\u5b9d\u9e21&#034;, &#034;610300&#034;, 34.3620, 107.2370},<br \/>\n{&#034;\u54b8\u9633&#034;, &#034;610400&#034;, 34.3300, 108.7100},<br \/>\n{&#034;\u6e2d\u5357&#034;, &#034;610500&#034;, 34.5000, 109.5030},<br \/>\n{&#034;\u5ef6\u5b89&#034;, &#034;610600&#034;, 36.5960, 109.4890},<br \/>\n{&#034;\u6c49\u4e2d&#034;, &#034;610700&#034;, 33.0670, 107.0230},<br \/>\n{&#034;\u6986\u6797&#034;, &#034;610800&#034;, 38.2840, 109.7350},<br \/>\n{&#034;\u5b89\u5eb7&#034;, &#034;610900&#034;, 32.6850, 109.0290},<br \/>\n{&#034;\u5546\u6d1b&#034;, &#034;611000&#034;, 33.8680, 110.1010},<br \/>\n{&#034;\u5170\u5dde&#034;, &#034;620100&#034;, 36.0611, 103.8343},<br \/>\n{&#034;\u5609\u5cea\u5173&#034;, &#034;620200&#034;, 39.7720, 98.2890},<br \/>\n{&#034;\u91d1\u660c&#034;, &#034;620300&#034;, 38.5200, 102.1880},<br \/>\n{&#034;\u767d\u94f6&#034;, &#034;620400&#034;, 36.5450, 104.1780},<br \/>\n{&#034;\u5929\u6c34&#034;, &#034;620500&#034;, 34.5810, 105.7250},<br \/>\n{&#034;\u6b66\u5a01&#034;, &#034;620600&#034;, 37.9280, 102.6380},<br \/>\n{&#034;\u5f20\u6396&#034;, &#034;620700&#034;, 38.9260, 100.4510},<br \/>\n{&#034;\u5e73\u51c9&#034;, &#034;620800&#034;, 35.5400, 106.6850},<br \/>\n{&#034;\u9152\u6cc9&#034;, &#034;620900&#034;, 39.7330, 98.5080},<br \/>\n{&#034;\u5e86\u9633&#034;, &#034;621000&#034;, 35.7090, 107.6390},<br \/>\n{&#034;\u5b9a\u897f&#034;, &#034;621100&#034;, 35.5810, 104.6260},<br \/>\n{&#034;\u9647\u5357&#034;, &#034;621200&#034;, 33.4000, 104.9200},<br \/>\n{&#034;\u897f\u5b81&#034;, &#034;630100&#034;, 36.6171, 101.7782},<br \/>\n{&#034;\u6d77\u4e1c&#034;, &#034;630200&#034;, 36.5030, 102.1040},<br \/>\n{&#034;\u94f6\u5ddd&#034;, &#034;640100&#034;, 38.4872, 106.2309},<br \/>\n{&#034;\u77f3\u5634\u5c71&#034;, &#034;640200&#034;, 39.0170, 106.3750},<br \/>\n{&#034;\u5434\u5fe0&#034;, &#034;640300&#034;, 37.9930, 106.1940},<br \/>\n{&#034;\u56fa\u539f&#034;, &#034;640400&#034;, 36.0050, 106.2780},<br \/>\n{&#034;\u4e2d\u536b&#034;, &#034;640500&#034;, 37.5140, 105.1890},<br \/>\n{&#034;\u4e4c\u9c81\u6728\u9f50&#034;, &#034;650100&#034;, 43.8256, 87.6168},<br \/>\n{&#034;\u514b\u62c9\u739b\u4f9d&#034;, &#034;650200&#034;, 45.5960, 84.8730},<br \/>\n{&#034;\u5410\u9c81\u756a&#034;, &#034;650400&#034;, 42.9530, 89.1890},<br \/>\n{&#034;\u54c8\u5bc6&#034;, &#034;650500&#034;, 42.8270, 93.5150},<br \/>\n{&#034;\u660c\u5409&#034;, &#034;652300&#034;, 44.0120, 87.3080},<br \/>\n{&#034;\u5e93\u5c14\u52d2&#034;, &#034;652800&#034;, 41.7260, 86.1740},<br \/>\n{&#034;\u963f\u514b\u82cf&#034;, &#034;652900&#034;, 41.1710, 80.2640},<br \/>\n{&#034;\u5580\u4ec0&#034;, &#034;653100&#034;, 39.4700, 75.9890},<br \/>\n{&#034;\u4f0a\u5b81&#034;, &#034;654000&#034;, 43.9160, 81.3240},<br \/>\n{&#034;\u5854\u57ce&#034;, &#034;654200&#034;, 46.7460, 82.9810},<br \/>\n{&#034;\u963f\u52d2\u6cf0&#034;, &#034;654300&#034;, 47.8480, 88.1400},<br \/>\n{&#034;\u9999\u6e2f&#034;, &#034;810000&#034;, 22.3193, 114.1694},<br \/>\n{&#034;\u6fb3\u95e8&#034;, &#034;820000&#034;, 22.1987, 113.5439},<br \/>\n{&#034;\u53f0\u5317&#034;, &#034;710000&#034;, 25.0330, 121.5654},<br \/>\n};<br \/>\nstatic const int CITY_COUNT &#061; (int)(sizeof(CITY_TABLE) \/ sizeof(CITY_TABLE[0]));<\/p>\n<p>\/\/ \u53bb\u6389\u5c3e\u90e8\u300c\u5e02\u300d\u300c\u53bf\u300d\u300c\u533a\u300d\u300c\u81ea\u6cbb\u5dde\u300d\u7b49\u884c\u653f\u540e\u7f00&#xff0c;\u4fbf\u4e8e\u5339\u914d<br \/>\nstatic std::string StripSuffix(const std::string&amp; s) {<br \/>\nstatic const char* suf[] &#061; { &#034;\u81ea\u6cbb\u5dde&#034;, &#034;\u5730\u533a&#034;, &#034;\u5e02&#034;, &#034;\u53bf&#034;, &#034;\u533a&#034;, &#034;\u7701&#034; };<br \/>\nstd::string r &#061; s;<br \/>\nfor (int i &#061; 0; i &lt; 6; &#043;&#043;i) {<br \/>\nsize_t len &#061; strlen(suf[i]);<br \/>\nif (r.size() &gt; len &amp;&amp; r.compare(r.size() &#8211; len, len, suf[i]) &#061;&#061; 0)<br \/>\nreturn r.substr(0, r.size() &#8211; len);<br \/>\n}<br \/>\nreturn r;<br \/>\n}<\/p>\n<p>\/\/ UTF-8 \u5b57\u7b26\u6570&#xff08;\u4e2d\u6587\u4e00\u4e2a\u5b57\u7b97 1&#xff0c;\u4e0d\u80fd\u7528\u5b57\u8282\u6570\u5224\u65ad&#xff09;<br \/>\nstatic size_t Utf8Len(const std::string&amp; s) {<br \/>\nsize_t n &#061; 0;<br \/>\nfor (unsigned char c : s) if ((c &amp; 0xC0) !&#061; 0x80) &#043;&#043;n;<br \/>\nreturn n;<br \/>\n}<\/p>\n<p>\/\/ \u7cbe\u786e\u4f18\u5148&#xff0c;\u5176\u6b21\u53bb\u540e\u7f00&#xff0c;\u6700\u540e\u5b50\u4e32\u5305\u542b<br \/>\nstatic const CityInfo* FindCity(const std::string&amp; q) {<br \/>\nif (q.empty()) return NULL;<br \/>\nfor (int i &#061; 0; i &lt; CITY_COUNT; &#043;&#043;i)<br \/>\nif (q &#061;&#061; CITY_TABLE[i].name) return &amp;CITY_TABLE[i];<br \/>\nstd::string bare &#061; StripSuffix(q);<br \/>\nfor (int i &#061; 0; i &lt; CITY_COUNT; &#043;&#043;i)<br \/>\nif (bare &#061;&#061; CITY_TABLE[i].name) return &amp;CITY_TABLE[i];<br \/>\nif (Utf8Len(bare) &lt; 2) return NULL;<br \/>\nfor (int i &#061; 0; i &lt; CITY_COUNT; &#043;&#043;i)<br \/>\nif (std::string(CITY_TABLE[i].name).find(bare) !&#061; std::string::npos)<br \/>\nreturn &amp;CITY_TABLE[i];<br \/>\nreturn NULL;<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u7f16\u7801 \/ \u7f51\u7edc &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic std::string UrlEncode(const std::string&amp; in) {<br \/>\nstatic const char* hex &#061; &#034;0123456789ABCDEF&#034;;<br \/>\nstd::string out;<br \/>\nfor (unsigned char c : in) {<br \/>\nif (isalnum(c) || c &#061;&#061; &#039;-&#039; || c &#061;&#061; &#039;_&#039; || c &#061;&#061; &#039;.&#039; || c &#061;&#061; &#039;~&#039;) out &#043;&#061; (char)c;<br \/>\nelse { out &#043;&#061; &#039;%&#039;; out &#043;&#061; hex[c &gt;&gt; 4]; out &#043;&#061; hex[c &amp; 15]; }<br \/>\n}<br \/>\nreturn out;<br \/>\n}<\/p>\n<p>static std::wstring ToWide(const std::string&amp; utf8) {<br \/>\nif (utf8.empty()) return L&#034;&#034;;<br \/>\nint n &#061; MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), (int)utf8.size(), NULL, 0);<br \/>\nstd::wstring w(n, L&#039;\\\\0&#039;);<br \/>\nMultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), (int)utf8.size(), &amp;w[0], n);<br \/>\nreturn w;<br \/>\n}<\/p>\n<p>static bool LooksLikeGzip(const std::string&amp; s) {<br \/>\nreturn s.size() &gt;&#061; 2 &amp;&amp; (unsigned char)s[0] &#061;&#061; 0x1F &amp;&amp; (unsigned char)s[1] &#061;&#061; 0x8B;<br \/>\n}<\/p>\n<p>\/\/ \u540c\u6b65 HTTP(S) GET&#xff1b;status \u8fd4\u56de HTTP \u72b6\u6001\u7801&#xff08;0 \u8868\u793a\u8bf7\u6c42\u672c\u8eab\u5931\u8d25&#xff09;<br \/>\nstatic std::string HttpGet(const std::wstring&amp; host, const std::string&amp; path, bool https,<br \/>\n   DWORD* status &#061; NULL, bool allowGzip &#061; false) {<br \/>\nstd::string out;<br \/>\nif (status) *status &#061; 0;<\/p>\n<p>HINTERNET hSession &#061; WinHttpOpen(L&#034;WeatherDemo\/1.0&#034;,<br \/>\n WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);<br \/>\nif (!hSession) return out;<\/p>\n<p>DWORD policy &#061; WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS;<br \/>\nWinHttpSetOption(hSession, WINHTTP_OPTION_REDIRECT_POLICY, &amp;policy, sizeof(policy));<\/p>\n<p>HINTERNET hConn &#061; WinHttpConnect(hSession, host.c_str(),<br \/>\n https ? INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT, 0);<br \/>\nif (!hConn) { WinHttpCloseHandle(hSession); return out; }<\/p>\n<p>std::wstring wpath &#061; ToWide(path);<br \/>\nHINTERNET hReq &#061; WinHttpOpenRequest(hConn, L&#034;GET&#034;, wpath.c_str(), NULL,<br \/>\nWINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, https ? WINHTTP_FLAG_SECURE : 0);<br \/>\nif (!hReq) { WinHttpCloseHandle(hConn); WinHttpCloseHandle(hSession); return out; }<\/p>\n<p>\/\/ \u4ec5\u5728\u4e8c\u6b21\u91cd\u8bd5\u65f6\u5f00\u542f\u538b\u7f29&#xff08;\u9996\u6b21\u4e0d\u5e26&#xff0c;\u517c\u5bb9\u8001\u7cfb\u7edf&#xff09;<br \/>\nif (allowGzip) {<br \/>\n#ifndef WINHTTP_OPTION_DECOMPRESSION<br \/>\n#define WINHTTP_OPTION_DECOMPRESSION 118<br \/>\n#endif<br \/>\nDWORD mask &#061; 0x00000001 | 0x00000002;  \/\/ GZIP | DEFLATE<br \/>\nWinHttpSetOption(hReq, WINHTTP_OPTION_DECOMPRESSION, &amp;mask, sizeof(mask));<br \/>\n}<\/p>\n<p>WinHttpSetTimeouts(hSession, 10000, 10000, 10000, 10000);<\/p>\n<p>if (WinHttpSendRequest(hReq, WINHTTP_NO_ADDITIONAL_HEADERS, 0,<br \/>\n   WINHTTP_NO_REQUEST_DATA, 0, 0, 0) &amp;&amp;<br \/>\n   WinHttpReceiveResponse(hReq, NULL)) {<\/p>\n<p>if (status) {<br \/>\nDWORD code &#061; 0, len &#061; sizeof(code);<br \/>\nif (WinHttpQueryHeaders(hReq,<br \/>\nWINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER,<br \/>\nWINHTTP_HEADER_NAME_BY_INDEX, &amp;code, &amp;len, WINHTTP_NO_HEADER_INDEX))<br \/>\n*status &#061; code;<br \/>\n}<br \/>\nDWORD avail &#061; 0, read &#061; 0;<br \/>\nwhile (WinHttpQueryDataAvailable(hReq, &amp;avail) &amp;&amp; avail &gt; 0) {<br \/>\nstd::string buf(avail, &#039;\\\\0&#039;);<br \/>\nif (!WinHttpReadData(hReq, &amp;buf[0], avail, &amp;read) || read &#061;&#061; 0) break;<br \/>\nout.append(buf, 0, read);<br \/>\n}<br \/>\n}<br \/>\nWinHttpCloseHandle(hReq);<br \/>\nWinHttpCloseHandle(hConn);<br \/>\nWinHttpCloseHandle(hSession);<br \/>\nreturn out;<br \/>\n}<\/p>\n<p>\/\/ \u5e26\u8bca\u65ad\u7684\u8bf7\u6c42&#xff1a;\u7a7a\u54cd\u5e94 \/ gzip \/ \u975e JSON \u90fd\u4f1a\u660e\u786e\u63d0\u793a<br \/>\nstatic std::string FetchJSON(const std::wstring&amp; host, const std::string&amp; path, bool https) {<br \/>\nDWORD st &#061; 0;<br \/>\nstd::string j &#061; HttpGet(host, path, https, &amp;st, false);<br \/>\nif (LooksLikeGzip(j))                      \/\/ \u670d\u52a1\u5668\u5f3a\u5236\u538b\u7f29&#xff0c;\u91cd\u5f00\u4e00\u6b21\u5e26\u89e3\u538b<br \/>\nj &#061; HttpGet(host, path, https, &amp;st, true);<\/p>\n<p>if (j.empty()) {<br \/>\nstd::wstring h(host.begin(), host.end());<br \/>\nstd::wcout &lt;&lt; L&#034;&#xff08;\u8bf7\u6c42\u5931\u8d25&#xff1a;&#034; &lt;&lt; h &lt;&lt; L&#034;&#xff0c;HTTP&#061;&#034; &lt;&lt; st<br \/>\n&lt;&lt; L&#034;&#xff0c;WinError&#061;&#034; &lt;&lt; GetLastError() &lt;&lt; L&#034;&#xff09;\\\\n&#034;;<br \/>\nreturn &#034;&#034;;<br \/>\n}<br \/>\nif (LooksLikeGzip(j)) {<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;\u54cd\u5e94\u4ecd\u662f\u538b\u7f29\u6570\u636e&#xff0c;\u7cfb\u7edf\u4e0d\u652f\u6301\u81ea\u52a8\u89e3\u538b&#xff0c;\u8bf7\u5347\u7ea7\u5230 Win10 1803&#043;&#xff09;\\\\n&#034;;<br \/>\nreturn &#034;&#034;;<br \/>\n}<br \/>\nif (j[0] !&#061; &#039;{&#039;) {<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;\u63a5\u53e3\u8fd4\u56de\u975e JSON&#xff0c;\u72b6\u6001\u7801&#061;&#034; &lt;&lt; st &lt;&lt; &#034;&#xff0c;\u524d 200 \u5b57\u8282&#xff1a;&#xff09;\\\\n&#034;<br \/>\n&lt;&lt; j.substr(0, 200) &lt;&lt; &#034;\\\\n&#034;;<br \/>\nreturn &#034;&#034;;<br \/>\n}<br \/>\nreturn j;<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; JSON \u89e3\u6790 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\n\/\/ \\\\uXXXX \u2192 UTF-8&#xff1b;\u672c\u6765\u5c31\u662f\u4e2d\u6587\u5219\u539f\u6837\u8fd4\u56de<br \/>\nstatic std::string DecodeUnicode(const std::string&amp; s) {<br \/>\nstd::string out; bool changed &#061; false;<br \/>\nfor (size_t i &#061; 0; i &lt; s.size(); ) {<br \/>\nif (s[i] &#061;&#061; &#039;\\\\\\\\&#039; &amp;&amp; i &#043; 5 &lt; s.size() &amp;&amp; s[i &#043; 1] &#061;&#061; &#039;u&#039;) {<br \/>\nstd::string hex &#061; s.substr(i &#043; 2, 4);<br \/>\nif (hex.find_first_not_of(&#034;0123456789abcdefABCDEF&#034;) &#061;&#061; std::string::npos) {<br \/>\nunsigned cp &#061; (unsigned)strtoul(hex.c_str(), NULL, 16);<br \/>\nif (cp &lt; 0x80) {<br \/>\nout &#043;&#061; (char)cp;<br \/>\n} else if (cp &lt; 0x800) {<br \/>\nout &#043;&#061; (char)(0xC0 | (cp &gt;&gt; 6));<br \/>\nout &#043;&#061; (char)(0x80 | (cp &amp; 0x3F));<br \/>\n} else {<br \/>\nout &#043;&#061; (char)(0xE0 | (cp &gt;&gt; 12));<br \/>\nout &#043;&#061; (char)(0x80 | ((cp &gt;&gt; 6) &amp; 0x3F));<br \/>\nout &#043;&#061; (char)(0x80 | (cp &amp; 0x3F));<br \/>\n}<br \/>\nchanged &#061; true; i &#043;&#061; 6; continue;<br \/>\n}<br \/>\n}<br \/>\nout &#043;&#061; s[i&#043;&#043;];<br \/>\n}<br \/>\nif (!changed) { for (unsigned char c : s) if (c &gt;&#061; 0x80) return s; }<br \/>\nreturn out;<br \/>\n}<\/p>\n<p>static bool jsonStr(const std::string&amp; s, const std::string&amp; key, std::string&amp; val) {<br \/>\nstd::string k &#061; &#034;\\\\&#034;&#034; &#043; key &#043; &#034;\\\\&#034;&#034;;<br \/>\nsize_t p &#061; s.find(k);<br \/>\nif (p &#061;&#061; std::string::npos) return false;<br \/>\nif ((p &#061; s.find(&#039;:&#039;, p &#043; k.size())) &#061;&#061; std::string::npos) return false;<br \/>\nif ((p &#061; s.find(&#039;&#034;&#039;, p)) &#061;&#061; std::string::npos) return false;<br \/>\nsize_t e &#061; s.find(&#039;&#034;&#039;, &#043;&#043;p);<br \/>\nif (e &#061;&#061; std::string::npos) return false;<br \/>\nval &#061; DecodeUnicode(s.substr(p, e &#8211; p));<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>static bool jsonNum(const std::string&amp; s, const std::string&amp; key, double&amp; val) {<br \/>\nstd::string k &#061; &#034;\\\\&#034;&#034; &#043; key &#043; &#034;\\\\&#034;&#034;;<br \/>\nsize_t p &#061; s.find(k);<br \/>\nif (p &#061;&#061; std::string::npos) return false;<br \/>\nif ((p &#061; s.find(&#039;:&#039;, p &#043; k.size())) &#061;&#061; std::string::npos) return false;<br \/>\n\/\/ \u8df3\u8fc7\u7a7a\u767d&#xff0c;\u517c\u5bb9 &#034;key&#034;:[12.3] \u6570\u7ec4\u5f62\u5f0f&#xff08;\u53d6\u7b2c\u4e00\u4e2a\u5143\u7d20&#xff09;<br \/>\nwhile (&#043;&#043;p &lt; s.size() &amp;&amp; (s[p] &#061;&#061; &#039; &#039; || s[p] &#061;&#061; &#039;\\\\t&#039; || s[p] &#061;&#061; &#039;\\\\n&#039; || s[p] &#061;&#061; &#039;\\\\r&#039;<br \/>\n  || s[p] &#061;&#061; &#039;[&#039; || s[p] &#061;&#061; &#039;,&#039;)) {}<br \/>\nchar* end &#061; nullptr;<br \/>\ndouble v &#061; strtod(s.c_str() &#043; p, &amp;end);<br \/>\nif (end &#061;&#061; s.c_str() &#043; p) return false;<br \/>\nval &#061; v; return true;<br \/>\n}<\/p>\n<p>\/\/ \u622a\u53d6 key \u5bf9\u5e94\u5bf9\u8c61&#xff08;\u5927\u62ec\u53f7\u914d\u5e73&#xff0c;\u907f\u5f00 current_units \u4e4b\u7c7b\u7684\u540c\u540d\u524d\u7f00&#xff09;<br \/>\nstatic std::string jsonObj(const std::string&amp; s, const std::string&amp; key) {<br \/>\nstd::string k &#061; &#034;\\\\&#034;&#034; &#043; key &#043; &#034;\\\\&#034;:&#034;;<br \/>\nsize_t p &#061; s.find(k);<br \/>\nif (p &#061;&#061; std::string::npos) return &#034;&#034;;<br \/>\nif ((p &#061; s.find(&#039;{&#039;, p &#043; k.size())) &#061;&#061; std::string::npos) return &#034;&#034;;<br \/>\nint depth &#061; 0;<br \/>\nfor (size_t i &#061; p; i &lt; s.size(); &#043;&#043;i) {<br \/>\nif (s[i] &#061;&#061; &#039;{&#039;)      &#043;&#043;depth;<br \/>\nelse if (s[i] &#061;&#061; &#039;}&#039;) { if (&#8211;depth &#061;&#061; 0) return s.substr(p, i &#8211; p &#043; 1); }<br \/>\n}<br \/>\nreturn &#034;&#034;;<br \/>\n}<\/p>\n<p>\/\/ \u622a\u53d6 key \u5bf9\u5e94\u6570\u7ec4\u91cc\u7684\u6bcf\u4e2a\u6241\u5e73\u5bf9\u8c61<br \/>\nstatic std::vector&lt;std::string&gt; jsonArrayObjs(const std::string&amp; s, const std::string&amp; key) {<br \/>\nstd::vector&lt;std::string&gt; res;<br \/>\nstd::string k &#061; &#034;\\\\&#034;&#034; &#043; key &#043; &#034;\\\\&#034;:&#034;;<br \/>\nsize_t p &#061; s.find(k);<br \/>\nif (p &#061;&#061; std::string::npos) return res;<br \/>\np &#061; s.find(&#039;[&#039;, p &#043; k.size());<br \/>\nif (p &#061;&#061; std::string::npos) return res;<br \/>\nint depth &#061; 0; size_t start &#061; std::string::npos;<br \/>\nfor (size_t i &#061; p; i &lt; s.size(); &#043;&#043;i) {<br \/>\nchar c &#061; s[i];<br \/>\nif (c &#061;&#061; &#039;[&#039;) &#043;&#043;depth;<br \/>\nelse if (c &#061;&#061; &#039;]&#039;) { if (&#8211;depth &#061;&#061; 0) break; }<br \/>\nelse if (c &#061;&#061; &#039;{&#039; &amp;&amp; depth &#061;&#061; 1) start &#061; i;<br \/>\nelse if (c &#061;&#061; &#039;}&#039; &amp;&amp; depth &#061;&#061; 1 &amp;&amp; start !&#061; std::string::npos) {<br \/>\nres.push_back(s.substr(start, i &#8211; start &#043; 1));<br \/>\nstart &#061; std::string::npos;<br \/>\n}<br \/>\n}<br \/>\nreturn res;<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; WMO \u5929\u6c14\u4ee3\u7801 \u2192 \u4e2d\u6587&#xff08;\u4ec5 Open-Meteo \u8def\u5f84&#xff09;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic const char* WeatherDesc(int code) {<br \/>\nswitch (code) {<br \/>\ncase 0:  return &#034;\u6674&#034;;<br \/>\ncase 1:  return &#034;\u5927\u90e8\u6674\u6717&#034;;<br \/>\ncase 2:  return &#034;\u5c40\u90e8\u591a\u4e91&#034;;<br \/>\ncase 3:  return &#034;\u9634&#034;;<br \/>\ncase 45: case 48: return &#034;\u96fe&#034;;<br \/>\ncase 51: case 53: case 55: return &#034;\u6bdb\u6bdb\u96e8&#034;;<br \/>\ncase 56: case 57: return &#034;\u51bb\u96e8&#034;;<br \/>\ncase 61: return &#034;\u5c0f\u96e8&#034;;<br \/>\ncase 63: return &#034;\u4e2d\u96e8&#034;;<br \/>\ncase 65: return &#034;\u5927\u96e8&#034;;<br \/>\ncase 66: case 67: return &#034;\u51bb\u96e8&#034;;<br \/>\ncase 71: case 73: case 75: return &#034;\u96ea&#034;;<br \/>\ncase 77: return &#034;\u7c73\u96ea&#034;;<br \/>\ncase 80: case 81: case 82: return &#034;\u9635\u96e8&#034;;<br \/>\ncase 85: case 86: return &#034;\u9635\u96ea&#034;;<br \/>\ncase 95: return &#034;\u96f7\u9635\u96e8&#034;;<br \/>\ncase 96: case 99: return &#034;\u96f7\u66b4\u4f34\u51b0\u96f9&#034;;<br \/>\ndefault: return &#034;\u672a\u77e5&#034;;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; IP \u5b9a\u4f4d &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic bool CityByIP_Amap(std::string&amp; city, std::string&amp; adcode, std::string&amp; province) {<br \/>\nstd::string j &#061; FetchJSON(L&#034;restapi.amap.com&#034;, &#034;\/v3\/ip?key&#061;&#034; &#043; AMAP_KEY, true);<br \/>\nif (j.empty()) return false;<br \/>\nstd::string st;<br \/>\njsonStr(j, &#034;status&#034;, st);<br \/>\nif (st !&#061; &#034;1&#034;) return false;<br \/>\njsonStr(j, &#034;province&#034;, province);<br \/>\njsonStr(j, &#034;city&#034;, city);<br \/>\njsonStr(j, &#034;adcode&#034;, adcode);<br \/>\nreturn !city.empty();<br \/>\n}<\/p>\n<p>static bool CityByIP_Free(std::string&amp; city) {<br \/>\nstd::string j &#061; FetchJSON(L&#034;ip-api.com&#034;, &#034;\/json\/?lang&#061;zh-CN&amp;fields&#061;status,city&#034;, false);<br \/>\nreturn !j.empty() &amp;&amp; jsonStr(j, &#034;city&#034;, city) &amp;&amp; !city.empty();<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5929\u6c14&#xff1a;\u9ad8\u5fb7&#xff08;\u4e2d\u56fd\u6c14\u8c61\u5c40\u5b9e\u6d4b&#xff09;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic bool GetWeatherAmap(const std::string&amp; query) {<br \/>\nstd::string url &#061; &#034;\/v3\/weather\/weatherInfo?city&#061;&#034; &#043; UrlEncode(query)<br \/>\n&#043; &#034;&amp;key&#061;&#034; &#043; AMAP_KEY &#043; &#034;&amp;extensions&#061;base&amp;output&#061;JSON&#034;;<br \/>\nstd::string j &#061; FetchJSON(L&#034;restapi.amap.com&#034;, url, true);<br \/>\nif (j.empty()) return false;<\/p>\n<p>std::string st, info;<br \/>\njsonStr(j, &#034;status&#034;, st);<br \/>\nif (st !&#061; &#034;1&#034;) {<br \/>\njsonStr(j, &#034;info&#034;, info);<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;\u9ad8\u5fb7\u8fd4\u56de&#xff1a;&#034; &lt;&lt; (info.empty() ? st : info) &lt;&lt; &#034;&#xff09;\\\\n&#034;;<br \/>\nreturn false;<br \/>\n}<\/p>\n<p>std::vector&lt;std::string&gt; arr &#061; jsonArrayObjs(j, &#034;lives&#034;);<br \/>\nif (arr.empty()) { std::cout &lt;&lt; &#034;&#xff08;\u9ad8\u5fb7\u89e3\u6790\u5931\u8d25&#xff1a;\\\\n&#034; &lt;&lt; j &lt;&lt; &#034;&#xff09;\\\\n&#034;; return false; }<\/p>\n<p>std::string w, t, h, wd, wp, rt, pc, cc;<br \/>\njsonStr(arr[0], &#034;province&#034;, pc);<br \/>\njsonStr(arr[0], &#034;city&#034;, cc);<br \/>\njsonStr(arr[0], &#034;weather&#034;, w);<br \/>\njsonStr(arr[0], &#034;temperature&#034;, t);<br \/>\njsonStr(arr[0], &#034;humidity&#034;, h);<br \/>\njsonStr(arr[0], &#034;winddirection&#034;, wd);<br \/>\njsonStr(arr[0], &#034;windpower&#034;, wp);<br \/>\njsonStr(arr[0], &#034;reporttime&#034;, rt);<\/p>\n<p>std::string loc &#061; cc.empty() ? query : cc;<br \/>\nif (!pc.empty() &amp;&amp; loc.find(pc) &#061;&#061; std::string::npos) loc &#061; pc &#043; &#034; &#034; &#043; loc;<\/p>\n<p>std::cout &lt;&lt; &#034;\\\\n&#061;&#061;&#061;&#061;&#061; &#034; &lt;&lt; loc &lt;&lt; &#034; \u5b9e\u65f6\u5929\u6c14 &#061;&#061;&#061;&#061;&#061;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u5929\u6c14&#xff1a;&#034; &lt;&lt; w &lt;&lt; &#034;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u6e29\u5ea6&#xff1a;&#034; &lt;&lt; t &lt;&lt; &#034; \u00b0C\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u6e7f\u5ea6&#xff1a;&#034; &lt;&lt; h &lt;&lt; &#034; %\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u98ce\u529b&#xff1a;&#034; &lt;&lt; wd &lt;&lt; &#034;\u98ce &#034; &lt;&lt; wp &lt;&lt; &#034; \u7ea7\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u53d1\u5e03\u65f6\u95f4&#xff1a;&#034; &lt;&lt; rt &lt;&lt; &#034;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;\u6570\u636e\u6e90&#xff1a;\u4e2d\u56fd\u6c14\u8c61\u5c40 \/ \u9ad8\u5fb7&#xff09;\\\\n&#034;;<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u5929\u6c14&#xff1a;Open-Meteo&#xff08;\u515c\u5e95&#xff0c;\u6570\u503c\u9884\u62a5&#xff09;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic bool GetWeatherOpenMeteo(double lat, double lon, const std::string&amp; label) {<br \/>\nchar url[512];<br \/>\nsnprintf(url, sizeof(url),<br \/>\n &#034;\/v1\/forecast?latitude&#061;%.4f&amp;longitude&#061;%.4f&#034;<br \/>\n &#034;&amp;current&#061;temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m&#034;<br \/>\n &#034;&amp;daily&#061;temperature_2m_max,temperature_2m_min&#034;<br \/>\n &#034;&amp;timezone&#061;auto&amp;forecast_days&#061;1&#034;, lat, lon);<\/p>\n<p>std::string j &#061; FetchJSON(L&#034;api.open-meteo.com&#034;, url, true);<br \/>\nif (j.empty()) return false;<\/p>\n<p>\/\/ \u5fc5\u987b\u5148\u5207\u51fa current \u5bf9\u8c61&#xff0c;\u5426\u5219\u4f1a\u8bef\u53d6 current_units \u91cc\u7684\u5355\u4f4d\u5b57\u7b26\u4e32<br \/>\nstd::string cur &#061; jsonObj(j, &#034;current&#034;);<br \/>\nif (cur.empty()) { std::cout &lt;&lt; &#034;&#xff08;\u89e3\u6790\u5931\u8d25&#xff0c;\u539f\u59cb\u8fd4\u56de&#xff1a;\\\\n&#034; &lt;&lt; j &lt;&lt; &#034;&#xff09;\\\\n&#034;; return false; }<\/p>\n<p>double temp &#061; 0, humi &#061; 0, feel &#061; 0, wcode &#061; 0, wind &#061; 0;<br \/>\njsonNum(cur, &#034;temperature_2m&#034;, temp);<br \/>\njsonNum(cur, &#034;relative_humidity_2m&#034;, humi);<br \/>\njsonNum(cur, &#034;apparent_temperature&#034;, feel);<br \/>\njsonNum(cur, &#034;weather_code&#034;, wcode);<br \/>\njsonNum(cur, &#034;wind_speed_10m&#034;, wind);<\/p>\n<p>std::string day &#061; jsonObj(j, &#034;daily&#034;);<br \/>\ndouble tmax &#061; 0, tmin &#061; 0;<br \/>\nif (!day.empty()) {<br \/>\njsonNum(day, &#034;temperature_2m_max&#034;, tmax);<br \/>\njsonNum(day, &#034;temperature_2m_min&#034;, tmin);<br \/>\n}<\/p>\n<p>std::cout &lt;&lt; &#034;\\\\n&#061;&#061;&#061;&#061;&#061; &#034; &lt;&lt; label &lt;&lt; &#034; \u5b9e\u65f6\u5929\u6c14 &#061;&#061;&#061;&#061;&#061;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u5750\u6807&#xff1a;&#034; &lt;&lt; lat &lt;&lt; &#034;, &#034; &lt;&lt; lon &lt;&lt; &#034;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u5929\u6c14&#xff1a;&#034; &lt;&lt; WeatherDesc((int)wcode) &lt;&lt; &#034;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u6e29\u5ea6&#xff1a;&#034; &lt;&lt; temp &lt;&lt; &#034; \u00b0C&#xff08;\u4f53\u611f &#034; &lt;&lt; feel &lt;&lt; &#034; \u00b0C&#xff09;\\\\n&#034;;<br \/>\nif (tmax !&#061; 0 || tmin !&#061; 0)<br \/>\nstd::cout &lt;&lt; &#034;\u4eca\u65e5&#xff1a;&#034; &lt;&lt; tmin &lt;&lt; &#034; ~ &#034; &lt;&lt; tmax &lt;&lt; &#034; \u00b0C\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u6e7f\u5ea6&#xff1a;&#034; &lt;&lt; humi &lt;&lt; &#034; %\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u98ce\u901f&#xff1a;&#034; &lt;&lt; wind &lt;&lt; &#034; km\/h\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;\u6570\u636e\u6e90&#xff1a;Open-Meteo \u6570\u503c\u9884\u62a5&#xff0c;\u4e0e\u7ad9\u70b9\u5b9e\u6d4b\u53ef\u80fd\u6709 1~3\u00b0C \u5dee\u5f02&#xff09;\\\\n&#034;;<br \/>\nreturn true;<br \/>\n}<\/p>\n<p>\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u4e3b\u6d41\u7a0b &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<br \/>\nstatic void PrintNotFound(const std::string&amp; q) {<br \/>\nstd::cout &lt;&lt; &#034;\\\\n\u5185\u7f6e\u57ce\u5e02\u8868\u672a\u6536\u5f55\u300c&#034; &lt;&lt; q &lt;&lt; &#034;\u300d\u3002\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;\u53ef\u4ee5&#xff1a;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;  1) \u6362\u7528\u5730\u7ea7\u5e02\u540d&#xff08;\u5982\u300c\u968f\u5dde\u300d\u800c\u4e0d\u662f\u300c\u968f\u53bf\u300d&#xff09;\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;  2) \u76f4\u63a5\u8f93\u5165\u7ecf\u7eac\u5ea6&#xff0c;\u683c\u5f0f&#xff1a;\u7eac\u5ea6,\u7ecf\u5ea6  \u4f8b\u5982 31.7179,113.3827\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;  3) \u586b\u9ad8\u5fb7 Key \u540e\u53ef\u67e5\u4efb\u610f\u533a\u53bf&#xff08;\u9ad8\u5fb7\u6309\u540d\u79f0\u67e5\u8be2&#xff0c;\u4e0d\u53d7\u5185\u7f6e\u8868\u9650\u5236&#xff09;\\\\n&#034;;<br \/>\n}<\/p>\n<p>int main() {<br \/>\n\/\/SetConsoleOutputCP(CP_UTF8);<\/p>\n<p>const bool hasAmap &#061; !AMAP_KEY.empty();<\/p>\n<p>std::string city;<br \/>\nstd::cout &lt;&lt; &#034;\u8f93\u5165\u57ce\u5e02\u540d&#xff08;\u7559\u7a7a&#061;\u6309IP\u8bc6\u522b&#xff0c;\u4e5f\u53ef\u76f4\u63a5\u8f93 \u7eac\u5ea6,\u7ecf\u5ea6&#xff09;&#xff1a;&#034;;<br \/>\nstd::getline(std::cin, city);<\/p>\n<p>\/\/ \u53bb\u6389\u9996\u5c3e\u7a7a\u767d<br \/>\nwhile (!city.empty() &amp;&amp; (unsigned char)city[0] &lt;&#061; &#039; &#039;) city.erase(0, 1);<br \/>\nwhile (!city.empty() &amp;&amp; (unsigned char)city[city.size() &#8211; 1] &lt;&#061; &#039; &#039;) city.erase(city.size() &#8211; 1);<\/p>\n<p>if (city.empty()) {<br \/>\nstd::string adcode, province;<br \/>\nstd::cout &lt;&lt; &#034;\u6b63\u5728\u6309 IP \u8bc6\u522b\u6240\u5728\u5730\u533a&#8230;\\\\n&#034;;<br \/>\nbool got &#061; hasAmap ? CityByIP_Amap(city, adcode, province) : CityByIP_Free(city);<br \/>\nif (!got &amp;&amp; hasAmap) { got &#061; CityByIP_Free(city); adcode.clear(); }<\/p>\n<p>if (got &amp;&amp; !city.empty()) {<br \/>\nstd::cout &lt;&lt; &#034;IP \u5b9a\u4f4d\u5230\u300c&#034; &lt;&lt; (province.empty() ? city : province &#043; &#034; &#034; &#043; city) &lt;&lt; &#034;\u300d\\\\n&#034;;<br \/>\nstd::cout &lt;&lt; &#034;IP \u5b9a\u4f4d\u53ea\u5230\u57ce\u5e02\u7ea7&#xff0c;\u53ef\u80fd\u504f\u5230\u8fd0\u8425\u5546\u8282\u70b9\u57ce\u5e02&#xff1b;&#034;<br \/>\n&#034;\u56de\u8f66\u63a5\u53d7&#xff0c;\u6216\u8f93\u5165\u6b63\u786e\u57ce\u5e02\u540d\u7ea0\u6b63\\\\n&gt; &#034;;<br \/>\nstd::string fix;<br \/>\nstd::getline(std::cin, fix);<br \/>\nif (!fix.empty()) { city &#061; fix; adcode.clear(); province.clear(); }<br \/>\n}<br \/>\nif (city.empty()) {<br \/>\nstd::cerr &lt;&lt; &#034;IP \u8bc6\u522b\u5931\u8d25&#xff0c;\u8bf7\u624b\u52a8\u8f93\u5165\u57ce\u5e02\u540d\\\\n&#034;;<br \/>\nsystem(&#034;pause&#034;); return 1;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u76f4\u63a5\u8f93\u5165\u7ecf\u7eac\u5ea6&#xff1a;31.7179,113.3827<br \/>\ndouble lat &#061; 0, lon &#061; 0;<br \/>\nif (sscanf(city.c_str(), &#034;%lf,%lf&#034;, &amp;lat, &amp;lon) &#061;&#061; 2 ||<br \/>\nsscanf(city.c_str(), &#034;%lf , %lf&#034;, &amp;lat, &amp;lon) &#061;&#061; 2) {<br \/>\nbool ok &#061; false;<br \/>\nif (hasAmap) {<br \/>\n\/\/ \u9ad8\u5fb7\u8981\u6c42\u300c\u7ecf\u5ea6,\u7eac\u5ea6\u300d&#xff0c;\u4e0e Open-Meteo \u7684\u300c\u7eac\u5ea6,\u7ecf\u5ea6\u300d\u987a\u5e8f\u76f8\u53cd<br \/>\nchar amapXY[64];<br \/>\nsnprintf(amapXY, sizeof(amapXY), &#034;%.6f,%.6f&#034;, lon, lat);<br \/>\nok &#061; GetWeatherAmap(amapXY);<br \/>\n}<br \/>\nif (!ok) ok &#061; GetWeatherOpenMeteo(lat, lon, city);<br \/>\nif (!ok) { std::cerr &lt;&lt; &#034;\u67e5\u8be2\u5931\u8d25\\\\n&#034;; system(&#034;pause&#034;); return 1; }<br \/>\nsystem(&#034;pause&#034;); return 0;<br \/>\n}<\/p>\n<p>\/\/ \u5185\u7f6e\u8868\u67e5\u8be2&#xff08;\u79bb\u7ebf&#xff0c;\u96f6\u4f9d\u8d56&#xff09;<br \/>\nconst CityInfo* ci &#061; FindCity(city);<br \/>\nif (!ci) {<br \/>\n\/\/ \u6709 Key \u65f6\u4ecd\u53ef\u4ea4\u7ed9\u9ad8\u5fb7\u6309\u540d\u79f0\u67e5<br \/>\nif (hasAmap &amp;&amp; GetWeatherAmap(city)) { system(&#034;pause&#034;); return 0; }<br \/>\nstd::cout &lt;&lt; &#034;&#xff08;&#034; &lt;&lt; (hasAmap ? &#034;\u9ad8\u5fb7\u6309\u540d\u79f0\u67e5\u8be2\u4e5f\u5931\u8d25&#034; : &#034;\u672a\u586b\u9ad8\u5fb7Key&#xff0c;\u65e0\u6cd5\u5728\u7ebf\u67e5\u8be2&#034;) &lt;&lt; &#034;&#xff09;\\\\n&#034;;<br \/>\nPrintNotFound(city);<br \/>\nsystem(&#034;pause&#034;); return 1;<br \/>\n}<\/p>\n<p>std::cout &lt;&lt; &#034;\u5339\u914d&#xff1a;&#034; &lt;&lt; ci-&gt;name &lt;&lt; &#034;&#xff08;adcode &#034; &lt;&lt; ci-&gt;adcode<br \/>\n&lt;&lt; &#034;&#xff0c;&#034; &lt;&lt; ci-&gt;lat &lt;&lt; &#034;, &#034; &lt;&lt; ci-&gt;lon &lt;&lt; &#034;&#xff09;\\\\n&#034;;<\/p>\n<p>bool ok &#061; false;<br \/>\nif (hasAmap) {<br \/>\nok &#061; GetWeatherAmap(ci-&gt;adcode);                 \/\/ adcode \u6700\u7cbe\u786e<br \/>\nif (!ok) { std::cout &lt;&lt; &#034;adcode \u67e5\u8be2\u5931\u8d25&#xff0c;\u6539\u7528\u57ce\u5e02\u540d\u91cd\u8bd5&#8230;\\\\n&#034;; ok &#061; GetWeatherAmap(ci-&gt;name); }<br \/>\nif (!ok) { std::cout &lt;&lt; &#034;\u9ad8\u5fb7\u4e0d\u53ef\u7528&#xff0c;\u81ea\u52a8\u56de\u9000 Open-Meteo&#8230;\\\\n&#034;; }<br \/>\n}<br \/>\nif (!ok) ok &#061; GetWeatherOpenMeteo(ci-&gt;lat, ci-&gt;lon, ci-&gt;name);<\/p>\n<p>if (!ok) {<br \/>\nstd::cerr &lt;&lt; &#034;\u67e5\u8be2\u5931\u8d25&#xff1a;\u5929\u6c14\u63a5\u53e3\u4e0d\u53ef\u8fbe\u3002\u53ef\u586b\u9ad8\u5fb7 Key \u6362\u7528\u56fd\u5185\u6570\u636e\u6e90\u3002\\\\n&#034;;<br \/>\nsystem(&#034;pause&#034;); return 1;<br \/>\n}<\/p>\n<p>system(&#034;pause&#034;);<br \/>\nreturn 0;<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;&#xff01;\u57ce\u5e02-&gt;\u7ecf\u7eac\u5ea6\u90e8\u5206\u7531AI\u5b8c\u6210&#xff08;\u592a\u591a\u4e86&#xff09;qwq\/\/ \u5929\u6c14\u67e5\u8be2&#xff08;Windows \/ MinGW \/ RedPanda-CPP&#xff09;<br \/>\n\/\/ \u7279\u70b9&#xff1a;\u5185\u7f6e\u5168\u56fd 305 \u4e2a\u5730\u7ea7\u5e02\u5750\u6807\u8868&amp;#xf<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[55,190],"topic":[],"class_list":["post-101188","post","type-post","status-publish","format-standard","hentry","category-server","tag-c","tag-190"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/101188.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;&#xff01;\u57ce\u5e02-&gt;\u7ecf\u7eac\u5ea6\u90e8\u5206\u7531AI\u5b8c\u6210&#xff08;\u592a\u591a\u4e86&#xff09;qwq\/\/ \u5929\u6c14\u67e5\u8be2&#xff08;Windows \/ MinGW \/ RedPanda-CPP&#xff09; \/\/ \u7279\u70b9&#xff1a;\u5185\u7f6e\u5168\u56fd 305 \u4e2a\u5730\u7ea7\u5e02\u5750\u6807\u8868&amp;#xf\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/101188.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-06T03:56:57+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/101188.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/101188.html\",\"name\":\"|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-09-06T03:56:57+00:00\",\"dateModified\":\"2026-09-06T03:56:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/101188.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/101188.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/101188.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"|C++\u83b7\u53d6\u5929\u6c14|770+\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/101188.html","og_locale":"zh_CN","og_type":"article","og_title":"|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;\u94fe\u63a5\u5668\u9700\u8981\u52a0&#xff1a;-lwinhttp&#xff01;&#xff01;&#xff01;\u57ce\u5e02-&gt;\u7ecf\u7eac\u5ea6\u90e8\u5206\u7531AI\u5b8c\u6210&#xff08;\u592a\u591a\u4e86&#xff09;qwq\/\/ \u5929\u6c14\u67e5\u8be2&#xff08;Windows \/ MinGW \/ RedPanda-CPP&#xff09; \/\/ \u7279\u70b9&#xff1a;\u5185\u7f6e\u5168\u56fd 305 \u4e2a\u5730\u7ea7\u5e02\u5750\u6807\u8868&amp;#xf","og_url":"https:\/\/www.wsisp.com\/helps\/101188.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-09-06T03:56:57+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"12 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/101188.html","url":"https:\/\/www.wsisp.com\/helps\/101188.html","name":"|C++\u83b7\u53d6\u5929\u6c14|770+ - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-09-06T03:56:57+00:00","dateModified":"2026-09-06T03:56:57+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/101188.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/101188.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/101188.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"|C++\u83b7\u53d6\u5929\u6c14|770+"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/101188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=101188"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/101188\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=101188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=101188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=101188"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=101188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}