質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

Q&A

解決済

2回答

847閲覧

boost ライブラリについて質問です

kit_break

総合スコア14

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Boost

Boost (ブースト)は、C++の先駆的な開発者のコミュニティ、 またそのコミュニティによって公開されているオープンソースライブラリのことを指します。

0グッド

0クリップ

投稿2017/08/26 10:05

###前提・実現したいこと
boost/foreach.hpp で定義されている BOOST_FOREACH を使って ネストになっているMap構造のデータを走査したいと考えているのですが、子ノードの値を取り出せず,親の部分しか取り出すことができていません。
再帰処理を行って子ノードを表示させようとしているのですが、ネストになっているかどうかを判定する関数などはboostにあるのでしょうか?

###該当のソースコード

//関数 void roop(ptree pt) { BOOST_FOREACH(const boost::property_tree::ptree::value_type& e, pt) { if(ネストになっているかを判定する関数) { //親の値で再帰処理 roop(e->second); //ネストになっていない場合表示する } else { // 親のキーと値しか表示できません std::cout << e.first << ":" << e.second.data() << "\n"; } } } //JSON { "Data": { "z" : 100, "a" : 1, "info": [ {"id": 1, "name": "Alice"}, {"id": 2, "name": "Millia"} ] } }

###試したこと
ネストになっているか 最終的には配列になっているのかを判定したいので boost のリファレンスを見ていますが見つかっておりません

###補足情報(言語/FW/ツール等のバージョンなど)
Visual C++ 2017

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

boostでJSONの読み書きを行うサンプルが以下にあります。
JSONの読み込み/書き込み

サンプルとほぼ同じ構造のJSONなので取り敢えずこのようにすれば読み出せると思います。

投稿2017/08/28 09:15

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは。

ptreeを使ったことはないのですが、ptreeは1階層分のコンテナになっているようです。そして、size()メンバ関数があるのでif (e.size() > 0)で判定できないでしょうか?

投稿2017/08/26 12:47

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kit_break

2017/08/28 10:15

ありがとうございます。 子ノードの値をちゃんと取得できました ですが、日本語文字を使う場合 ptree ではなく wptree を使う必要がるようですね。 結構複雑です
Chironian

2017/08/28 13:13

日本語処理はまじで複雑です。 Visual Studioの場合は日本語はUTF-16(wchar_t)を使うのがスムーズです。 しかし、マルチプラットフォーム開発では無駄な苦労をすることになるので、UTF-8(char)を使った方が楽できます。この場合はptreeも使えるだろうと思います。 ↓以前書いた下記の記事が参考になるかも。 https://theolizer.com/cpp-school1/cpp-school1-18/#c++
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問