C++ Jsoncpp 错误

问题描述

#include <iostream>
#include <curl/curl.h>
#include <fstream>
#include <json/json.h>   
using namespace std;
static size_t writecallback(void* contents,size_t size,size_t nmemb,void* userp) {
    ((std::string*)userp)->append((char*)contents,size * nmemb);
    return size * nmemb;
}

std::string ReadWebsite(const char* URL)
{
    CURL* curl;
    CURLcode res;
    std::string readBuffer;
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl,CURLOPT_URL,URL);
        curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0L);
        curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,CURLOPT_WRITEFUNCTION,writecallback);
        curl_easy_setopt(curl,CURLOPT_WRITEDATA,&readBuffer);

        res = curl_easy_perform(curl);
        if (res != CURLE_OK) {
           printf("Error");
        }

        curl_easy_strerror(res);
        curl_easy_cleanup(curl);
        curl_global_cleanup();

       // printf(readBuffer.c_str());

        return readBuffer;
    }
}
int main()
{
    Json::Reader reader;
    Json::Value root;
    std::string text = ReadWebsite("https://pastebin.com/raw/PW13MZjp");
    if (reader.parse(text.c_str(),root)) {
        cout << root["addresses"];
    }
}

C4996:'Json::Reader' 改用 CharReader 和 CharReaderBuilder。

C4996:'Json::Reader::__autoclassinit2' 改用 CharReader 和 CharReaderBuilder。

C4996:'Json::Reader::Reader' 改用 CharReader 和 CharReaderBuilder。

C4996:'Json::Reader::parse' 改用 CharReader 和 CharReaderBuilder。

如果我使用 CharReader 和 CharReadBuilder,我会在 ConsoleApplication2.exe 中的 0x79781F4C (ucrtbased.dll) 处抛出异常:0xC0000005:访问冲突读取位置 0xCCCCCCCC。

使用 CharReader 和 CharReadBuilder 编写代码

int main()
{
    std::string Reply = ReadWebsite("https://pastebin.com/raw/PW13MZjp");
    const auto rawJsonLength = static_cast<int>((Reply).length());
    JSONCPP_STRING err;
    Json::Value root;

    Json::CharReaderBuilder builder;
    const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
    if (!reader->parse((Reply).c_str(),Reply.c_str() + rawJsonLength,&root,&err)) {
        MessageBoxA(NULL,"error",MB_OK);
        return EXIT_FAILURE;
    }
    printf("%s\n\n",root["offsets"]["ls_offset"]);
    system("pause");
}

不接受任何帮助。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)