Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 读取json文件时的分段错误_C++_Json_Json C - Fatal编程技术网

C++ 读取json文件时的分段错误

C++ 读取json文件时的分段错误,c++,json,json-c,C++,Json,Json C,我需要读取json文件中包含的信息,如下所示: {"first":10, "second":"0", "P1":"1.e-20","P2":"1000","P3":"1000","P4":"1000","P5":"1"} 因为我没有处理这个问题的经验,所以我从下面几行代码开始。它编译时没有问题,但在执行时会返回分段错误。文件general.json位于同一文件夹中。如果我对最后一行进行注释,json文件中包含的信息将正确打印在屏幕上。谁能告诉我我做错了什么 #include <stdio

我需要读取json文件中包含的信息,如下所示:

{"first":10, "second":"0", "P1":"1.e-20","P2":"1000","P3":"1000","P4":"1000","P5":"1"}
因为我没有处理这个问题的经验,所以我从下面几行代码开始。它编译时没有问题,但在执行时会返回分段错误。文件general.json位于同一文件夹中。如果我对最后一行进行注释,json文件中包含的信息将正确打印在屏幕上。谁能告诉我我做错了什么

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fstream> // fstream.h in old versions of g++
#include <iostream>  //para cout
#include <sstream>
#include <json/json.h>

using namespace std;

int main() {
struct json_object *new_json, *json_arr, *json_reg, *json_field;
string line;
stringstream jsonfile;

ifstream json("file.json", ios::in); 
{getline(json, line); do {jsonfile << line;} while (getline(json, line));}
json.close();
cout << jsonfile.str().c_str();
new_json=json_tokener_parse(jsonfile.str().c_str());
json_field=json_object_object_get(json_reg, "first");
}
#包括
#包括
#包括
#在g的旧版本中包括//fstream.h++
#包括//para cout
#包括
#包括
使用名称空间std;
int main(){
struct json_object*new_json、*json_arr、*json_reg、*json_字段;
弦线;
stringstream jsonfile;
ifstream-json(“file.json”,ios::in);

{getline(json,line);do{jsonfile您正在使用
json_reg
指针,但没有初始化它,函数会取消引用它。您(很可能)正在使用where:

  • json\u object\u object\u get
    调用对象上的
    json\u object\u get\u ex

  • json\u object\u object\u get\u ex
    does
    switch(jso->o类型)
    取消引用无效指针


非常感谢,你说得对,我在最后一行使用的是json_reg,而不是new_json。现在已经修复了。