<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>How to Access Data in a Property Tree</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../property_tree.html" title="Chapter&#160;14.&#160;Boost.PropertyTree">
<link rel="prev" href="parsers.html" title="How to Populate a Property Tree">
<link rel="next" href="../property_tree/appendices.html" title="Appendices">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
<td align="center"><a href="../../../index.html">Home</a></td>
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="parsers.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../property_tree.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../property_tree/appendices.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_propertytree.accessing"></a><a class="link" href="accessing.html" title="How to Access Data in a Property Tree">How to Access Data in a Property
    Tree</a>
</h2></div></div></div>
<p>
      Property tree resembles (almost is) a standard container with value type of
      <code class="computeroutput"><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">ptree</span><span class="special">&gt;</span></code>.
      It has the usual member functions, such as <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id901510-bb">insert</a></code>,
      <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id901637-bb">push_back</a></code>,
      <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id959996-bb">find</a></code>,
      <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id901572-bb">erase</a></code>,
      etc. These can of course be used to populate and access the tree. For example
      the following code adds key <code class="computeroutput"><span class="string">"pi"</span></code>
      with data (almost) equal to mathematical <span class="emphasis"><em>pi</em></span> value:
    </p>
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id901637-bb">push_back</a></code><span class="special">(</span><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code><span class="special">::</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#boost.property_tree.basic_ptree.value_type">value_type</a></code><span class="special">(</span><span class="string">"pi"</span><span class="special">,</span> <code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code><span class="special">(</span><span class="string">"3.14159"</span><span class="special">)));</span>
</pre>
<p>
      To find the value of <code class="computeroutput"><span class="identifier">pi</span></code> we
      might do the following:
    </p>
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code><span class="special">::</span><code class="computeroutput">const_iterator</code> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id959996-bb">find</a></code><span class="special">(</span><span class="string">"pi"</span><span class="special">);</span>
<span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="identifier">it</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">.</span><span class="identifier">_ptree_data__</span><span class="special">());</span>
</pre>
<p>
      This looks quite cumbersome, and would be even more so if <code class="computeroutput"><span class="identifier">pi</span></code>
      value was not stored so near the top of the tree, and we cared just a little
      bit more about errors. Fortunately, there is another, correct way of doing
      it:
    </p>
<pre class="programlisting"><span class="identifier">ptree</span> <span class="identifier">pt</span><span class="special">;</span>
<span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code><span class="special">(</span><span class="string">"pi"</span><span class="special">,</span> <span class="number">3.14159</span><span class="special">);</span>                <span class="comment">// put double
</span><span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="string">"pi"</span><span class="special">);</span>     <span class="comment">// get double
</span></pre>
<p>
      It doesn't get simpler than that. Basically, there are 2 families of member
      functions, <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>
      and <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>,
      which allow intuitive access to data stored in the tree (direct children or
      not).
    </p>
<a name="boost_propertytree.accessing.three_ways_of_getting_data"></a><h4>
<a name="id2112019"></a>
      <a class="link" href="accessing.html#boost_propertytree.accessing.three_ways_of_getting_data">Three
      Ways of Getting Data</a>
    </h4>
<p>
      There are three versions of get: get, get (default-value version), and get_optional,
      which differ by failure handling strategy. All versions take path specifier,
      which determines in which key to search for a value. It can be a single key,
      or a path to key, where path elements are separated with a special character
      (a '.' if not specified differently). For example debug.logging.errorlevel
      might be a valid path with dot as a separator.
    </p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
          The throwing version (<code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>):
          
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="comment">/* ... */</span>
<span class="keyword">float</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="string">"a.path.to.float.value"</span><span class="special">);</span>
</pre>
          This call locates the proper node in the tree and tries to translate its
          data string to a float value. If that fails, exception is thrown. If path
          does not exist, it will be <code class="computeroutput"><a class="link" href="../boost/property_tree/ptree_bad_path.html" title="Class ptree_bad_path">ptree_bad_path</a></code>
          exception. If value could not be translated, it will be <code class="computeroutput"><a class="link" href="../boost/property_tree/ptree_bad_data.html" title="Class ptree_bad_data">ptree_bad_data</a></code>.
          Both of them derive from <code class="computeroutput"><a class="link" href="../boost/property_tree/ptree_error.html" title="Class ptree_error">ptree_error</a></code>
          to make common handling possible.
        </li>
<li class="listitem">
          The default-value version (<code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>):
          
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="comment">/* ... */</span>
<span class="keyword">float</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code><span class="special">(</span><span class="string">"a.path.to.float.value"</span><span class="special">,</span> <span class="special">-</span><span class="number">1.f</span><span class="special">);</span>
</pre>
          It will do the same as above, but if it fails, it will return the default
          value specified by second parameter (here -1.f) instead of throwing. This
          is very useful in common situations where one wants to allow omitting of
          some keys. Note that type specification needed in throwing version is normally
          not necessary here, because type is determined by the default value parameter.
        </li>
<li class="listitem">
          The optional version (<code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900639-bb">get_optional</a></code>):
          
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="comment">/* ... */</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;</span> <span class="identifier">v</span> <span class="special">=</span> <span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900639-bb">get_optional</a></code><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="string">"a.path.to.float.value"</span><span class="special">);</span>
</pre>
          This version uses boost::optional class to handle extraction failure. On
          successful extraction, it will return boost::optional initialized with
          extracted value. Otherwise, it will return uninitialized boost::optional.
        </li>
</ol></div>
<p>
      To retrieve value from this tree (not some subkey), use <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id988473-bb">get_value</a></code>,
      <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id988473-bb">get_value</a></code>
      (default-value version), and <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id931247-bb">get_value_optional</a></code>.
      They have identical semantics to <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>
      functions, except they don't take the <code class="computeroutput"><a class="link" href="../boost/property_tree/path.html" title="Type definition path">path</a></code>
      parameter. Don't call <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>
      with and empty <code class="computeroutput"><a class="link" href="../boost/property_tree/path.html" title="Type definition path">path</a></code>
      to do this as it will try to extract contents of subkey with empty name.
    </p>
<p>
      To use separator character other than default '<code class="literal">.</code>', each
      of the <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>
      versions has another form, which takes an additional parameter in front of
      path. This parameter of type <code class="computeroutput"><span class="keyword">char</span><span class="special">/</span><span class="keyword">wchar_t</span></code> specifies
      the separating character. This is a lifesaving device for those who may have
      dots in their keys:
    </p>
<pre class="programlisting"><span class="identifier">pt</span><span class="special">.</span><span class="identifier">get</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;(</span><span class="char">'/'</span><span class="special">,</span> <span class="string">"p.a.t.h/t.o/v.a.l.u.e"</span><span class="special">);</span>
<span class="identifier">pt</span><span class="special">.</span><span class="identifier">get</span><span class="special">(</span><span class="char">'/'</span><span class="special">,</span> <span class="string">"p.a.t.h/t.o/v.a.l.u.e"</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">NULL</span><span class="special">);</span>
<span class="identifier">pt</span><span class="special">.</span><span class="identifier">get_optional</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;(</span><span class="char">'/'</span><span class="special">,</span> <span class="string">"p.a.t.h/t.o/v.a.l.u.e"</span><span class="special">);</span>
</pre>
<a name="boost_propertytree.accessing.one_way_of_putting_data"></a><h4>
<a name="id2112741"></a>
      <a class="link" href="accessing.html#boost_propertytree.accessing.one_way_of_putting_data">One Way
      of Putting Data</a>
    </h4>
<p>
      To complement <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>,
      there is a <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      function. Contrary to <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>,
      it has only one variant. The reason is, there is no need to handle put failures
      so often (normally, <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      will only fail if conversion of the supplied value to <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#boost.property_tree.basic_ptree.data_type">data_type</a></code>
      fails or the system runs out of memory. In the former case, <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      will throw <code class="computeroutput"><a class="link" href="../boost/property_tree/ptree_bad_data.html" title="Class ptree_bad_data">ptree_bad_data</a></code>).
      Sample usage of <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      might appear as:
    </p>
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="identifier">pt</span><span class="special">.</span><code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code><span class="special">(</span><span class="string">"a.path.to.float.value"</span><span class="special">,</span> <span class="number">3.14f</span><span class="special">);</span>
</pre>
<p>
      Calling <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      will insert a new value at specified path, so that a call to <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900429-bb">get</a></code>
      specifying the same path will retrieve it. Further, <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      will insert any missing path elements during path traversal. For example, calling
      <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a><span class="special">(</span><span class="string">"key1.key2.key3"</span><span class="special">,</span> <span class="number">3.14f</span><span class="special">)</span></code>
      on an empty tree will insert three new children: <code class="computeroutput"><span class="identifier">key1</span></code>,
      <code class="computeroutput"><span class="identifier">key1</span><span class="special">.</span><span class="identifier">key2</span></code> and <code class="computeroutput"><span class="identifier">key1</span><span class="special">.</span><span class="identifier">key2</span><span class="special">.</span><span class="identifier">key3</span></code>. The last one will receive a string
      <code class="computeroutput"><span class="string">"3.14"</span></code> as data, while
      the two former ones will have empty data strings. <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      always inserts new keys at the back of the existing sequences.
    </p>
<p>
      Similar to <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id988473-bb">get_value</a></code>,
      there is also a <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id900356-bb">put_value</a></code>
      function. It does the same for this property tree what <code class="computeroutput"><a class="link" href="../boost/property_tree/basic_ptree.html#id960399-bb">put</a></code>
      does for its children. Thus, it does not require <code class="computeroutput"><a class="link" href="../boost/property_tree/path.html" title="Type definition path">path</a></code>:
    </p>
<pre class="programlisting"><code class="computeroutput"><a class="link" href="../boost/property_tree/ptree.html" title="Type definition ptree">ptree</a></code> <span class="identifier">pt</span><span class="special">;</span>
<span class="identifier">pt</span><span class="special">.</span><span class="identifier">__ptree_put_own__</span><span class="special">(</span><span class="number">3.14f</span><span class="special">);</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2008 Marcin Kalicinski<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="parsers.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../property_tree.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../property_tree/appendices.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
