2017-11-09 20 views
0

文字列変数を使用してオブジェクトを照会しようとするとエラーが発生しますが、文字列を直接使用するとエラーになります。RapidJSON文字列変数を使用してオブジェクトを照会する方法

JSON: {"x": "hello"}

これは動作します:

std::cout << document["x"].GetString(); 

これは動作しません:

std::string s = "x"; 
std::cout << document[s].GetString(); 

私はこのエラーを取得しています:

error: no viable overloaded operator[] for type 'rapidjson::Document' 
    (aka 'GenericDocument<UTF8<> >') 
std::cout << document[s].GetString(); 
       ~~~~~^~ 
note: candidate function not viable: no known conversion from 'std::string' 
    (aka 'basic_string<char, char_traits<char>, allocator<char> >') to 'SizeType' 
(aka 'unsigned int') for 1st argument 

私は間違って何をしていますか?

+0

、私はそれを解決しないと、新しいJSONパーサーを使用して開始し、エラーを処分した – Nikki

答えて

-1

は、オペレータがのstd ::文字列のためではなく、C-文字列のためにオーバーロードされていなかったようだ

std::cout << document[s.c_str()].GetString(); 

試してみてください。

c_strメンバ関数リファレンス)私の質問への答えを探している人には

+0

をjson11が、コードを決してrapidjson/document.hのアサーションに失敗します。 アサーションに失敗しました:(false)、関数演算子[]、file .../rapidjson/document.h、1111行。 アボートトラップ:6 – Nikki

+0

document.hを見た後、思ったほどシンプルではないようです最初は。 私はそのテンプレートのジャングルで自分の道を見つけることができません。 申し訳ありません –

関連する問題