0

次のような 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");
}
4

1 に答える 1

1

json_regポインタを初期化せずに使用しており、関数が逆参照しています。あなたは(おそらく)json-cを使用しています:

  • json_object_object_getjson_object_object_get_exオブジェクトの呼び出し

  • json_object_object_get_exswitch(jso->o_type)無効なポインターを逆参照します

于 2013-10-04T16:27:35.047 に答える