diff options
author | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-12-11 18:55:56 +0900 |
commit | 08c1e93fa36a49f49325a07fe91ff92c964c2b6c (patch) | |
tree | 7a7053ceb8874b28ec4b868d4c49b500008a102e /doc/html/boost_lexical_cast | |
parent | bb4dd8289b351fae6b55e303f189127a394a1edd (diff) | |
download | boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.gz boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.tar.bz2 boost-08c1e93fa36a49f49325a07fe91ff92c964c2b6c.zip |
Imported Upstream version 1.57.0upstream/1.57.0
Diffstat (limited to 'doc/html/boost_lexical_cast')
-rw-r--r-- | doc/html/boost_lexical_cast/changes.html | 78 | ||||
-rw-r--r-- | doc/html/boost_lexical_cast/examples.html | 220 | ||||
-rw-r--r-- | doc/html/boost_lexical_cast/frequently_asked_questions.html | 54 | ||||
-rw-r--r-- | doc/html/boost_lexical_cast/performance.html | 3288 | ||||
-rw-r--r-- | doc/html/boost_lexical_cast/synopsis.html | 120 |
5 files changed, 3672 insertions, 88 deletions
diff --git a/doc/html/boost_lexical_cast/changes.html b/doc/html/boost_lexical_cast/changes.html index d29f1b7072..d6e74dc872 100644 --- a/doc/html/boost_lexical_cast/changes.html +++ b/doc/html/boost_lexical_cast/changes.html @@ -3,9 +3,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Changes</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> +<link rel="up" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> <link rel="prev" href="frequently_asked_questions.html" title="Frequently Asked Questions"> <link rel="next" href="performance.html" title="Performance"> </head> @@ -26,16 +26,69 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_lexical_cast.changes"></a><a class="link" href="changes.html" title="Changes">Changes</a> </h2></div></div></div> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> +<li class="listitem"> + <span class="bold"><strong>boost 1.56.0 :</strong></span> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> + Added <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span></code> functions. + </li></ul></div> + </li> +<li class="listitem"> + <span class="bold"><strong>boost 1.54.0 :</strong></span> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> + Fix some issues with <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int128_type</span></code> + and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint128_type</span></code> conversions. Notify + user at compile time if the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> + are not specialized for 128bit types and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> + can not make conversions. + </li></ul></div> + </li> +<li class="listitem"> + <span class="bold"><strong>boost 1.54.0 :</strong></span> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> +<li class="listitem"> + Added code to convert <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">int128_type</span></code> + and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint128_type</span></code> types (requires GCC + 4.7 or higher). + </li> +<li class="listitem"> + Conversions to pointers will now fail to compile, instead of throwing + at runtime. + </li> +<li class="listitem"> + Restored ability to get pointers to <code class="computeroutput"><span class="identifier">lexical_cast</span></code> + function (was broken in 1.53.0). + </li> +</ul></div> + </li> +<li class="listitem"> + <span class="bold"><strong>boost 1.53.0 :</strong></span> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> + Much better input and output streams detection for user defined types. + </li></ul></div> + </li> +<li class="listitem"> + <span class="bold"><strong>boost 1.52.0 :</strong></span> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> +<li class="listitem"> + Restored compilation on MSVC-2003 (was broken in 1.51.0). + </li> +<li class="listitem"> + Added <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">CharType</span><span class="special">*</span> + <span class="identifier">chars</span><span class="special">,</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">)</span></code> function overload. + </li> +</ul></div> + </li> <li class="listitem"> <span class="bold"><strong>boost 1.51.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> Better performance, less memory usage for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">character_type</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="identifier">character_type</span><span class="special">,</span> <span class="identifier">N</span><span class="special">></span></code> conversions. </li></ul></div> </li> <li class="listitem"> <span class="bold"><strong>boost 1.50.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span></code> exception is now globaly visible and can be catched even if code is compiled with @@ -52,7 +105,7 @@ </li> <li class="listitem"> <span class="bold"><strong>boost 1.49.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> Restored work with typedefed wchar_t (compilation flag /Zc:wchar_t- for Visual Studio). @@ -65,7 +118,7 @@ </li> <li class="listitem"> <span class="bold"><strong>boost 1.48.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> Added code to work with Inf and NaN on any platform. </li> @@ -77,7 +130,7 @@ </li> <li class="listitem"> <span class="bold"><strong>boost 1.47.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> Optimizations for "C" and other locales without number grouping. @@ -103,7 +156,7 @@ </li> <li class="listitem"> <span class="bold"><strong>boost 1.34.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> Better performance for many combinations of Source and Target types. For more details refer to Alexander Nasonovs article <a href="http://accu.org/index.php/journals/1375" target="_top">Fine Tuning for lexical_cast, Overload #74, August 2006</a> <a href="http://www.accu.org/var/uploads/journals/overload74.pdf" target="_top">(PDF)</a>. @@ -111,7 +164,7 @@ </li> <li class="listitem"> <span class="bold"><strong>boost 1.33.0 :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> Call-by-const reference for the parameters. This requires partial specialization of class templates, so it doesn't work for MSVC 6, @@ -125,7 +178,7 @@ </li> <li class="listitem"> <span class="bold"><strong>Earlier :</strong></span> - <div class="itemizedlist"><ul class="itemizedlist" type="circle"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> <li class="listitem"> The previous version of lexical_cast used the default stream precision for reading and writing floating-point numbers. For numerics that @@ -167,7 +220,8 @@ </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 © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011, 2012 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011-2014 Antony + Polukhin<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> diff --git a/doc/html/boost_lexical_cast/examples.html b/doc/html/boost_lexical_cast/examples.html index f2eee3efc1..d8d8790eeb 100644 --- a/doc/html/boost_lexical_cast/examples.html +++ b/doc/html/boost_lexical_cast/examples.html @@ -3,10 +3,10 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Examples</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> -<link rel="prev" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> +<link rel="up" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> +<link rel="prev" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> <link rel="next" href="synopsis.html" title="Synopsis"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> @@ -26,33 +26,68 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_lexical_cast.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a> </h2></div></div></div> +<div class="toc"><dl class="toc"> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.strings_to_numbers_conversion">Strings + to numbers conversion</a></span></dt> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.numbers_to_strings_conversion">Numbers + to strings conversion</a></span></dt> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation">Converting + to string without dynamic memory allocation</a></span></dt> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.converting_part_of_the_string">Converting + part of the string</a></span></dt> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.generic_programming__boost_fusion_">Generic + programming (Boost.Fusion)</a></span></dt> +<dt><span class="section"><a href="examples.html#boost_lexical_cast.examples.generic_programming__boost_variant_">Generic + programming (Boost.Variant)</a></span></dt> +</dl></div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.strings_to_numbers_conversion"></a><a class="link" href="examples.html#boost_lexical_cast.examples.strings_to_numbers_conversion" title="Strings to numbers conversion">Strings + to numbers conversion</a> +</h3></div></div></div> +<p> + The following example treats command line arguments as a sequence of numeric + data + </p> <p> - The following example treats command line arguments as a sequence of numeric - data: </p> -<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">vector</span><span class="special">></span> + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="comment">/*argc*/</span><span class="special">,</span> <span class="keyword">char</span> <span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span> <span class="special">{</span> <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">;</span> <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span><span class="special">;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">short</span><span class="special">></span> <span class="identifier">args</span><span class="special">;</span> - <span class="keyword">while</span><span class="special">(*++</span><span class="identifier">argv</span><span class="special">)</span> + <span class="keyword">while</span> <span class="special">(*++</span><span class="identifier">argv</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">try</span> <span class="special">{</span> <span class="identifier">args</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">short</span><span class="special">>(*</span><span class="identifier">argv</span><span class="special">));</span> <span class="special">}</span> - <span class="keyword">catch</span><span class="special">(</span><span class="identifier">bad_lexical_cast</span> <span class="special">&)</span> + <span class="keyword">catch</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">bad_lexical_cast</span> <span class="special">&)</span> <span class="special">{</span> <span class="identifier">args</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">0</span><span class="special">);</span> <span class="special">}</span> <span class="special">}</span> - <span class="special">...</span> + + <span class="comment">// ...</span> <span class="special">}</span> </pre> <p> - The following example uses numeric data in a string expression: + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.numbers_to_strings_conversion"></a><a class="link" href="examples.html#boost_lexical_cast.examples.numbers_to_strings_conversion" title="Numbers to strings conversion">Numbers + to strings conversion</a> +</h3></div></div></div> +<p> + The following example uses numeric data in a string expression: + </p> +<p> </p> <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">log_message</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">&);</span> @@ -62,21 +97,168 @@ <span class="special">}</span> </pre> <p> - Following example converts some number and puts it to file: + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation"></a><a class="link" href="examples.html#boost_lexical_cast.examples.converting_to_string_without_dynamic_memory_allocation" title="Converting to string without dynamic memory allocation">Converting + to string without dynamic memory allocation</a> +</h3></div></div></div> +<p> + The following example converts some number and puts it to file: + </p> +<p> +</p> +<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">number_to_file</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">number</span><span class="special">,</span> <span class="identifier">FILE</span><span class="special">*</span> <span class="identifier">file</span><span class="special">)</span> +<span class="special">{</span> + <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="number">50</span><span class="special">></span> <span class="identifier">buf_t</span><span class="special">;</span> <span class="comment">// You can use std::array if your compiler supports it</span> + <span class="identifier">buf_t</span> <span class="identifier">buffer</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">buf_t</span><span class="special">>(</span><span class="identifier">number</span><span class="special">);</span> <span class="comment">// No dynamic memory allocation</span> + <span class="identifier">fputs</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">file</span><span class="special">);</span> +<span class="special">}</span> +</pre> +<p> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.converting_part_of_the_string"></a><a class="link" href="examples.html#boost_lexical_cast.examples.converting_part_of_the_string" title="Converting part of the string">Converting + part of the string</a> +</h3></div></div></div> +<p> + The following example takes part of the string and converts it to <code class="computeroutput"><span class="keyword">int</span></code>: + </p> +<p> </p> -<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> -<span class="identifier">FILE</span><span class="special">*</span> <span class="identifier">file</span><span class="special">;</span> -<span class="special">...</span> -<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="number">50</span><span class="special">></span> <span class="identifier">buf_t</span><span class="special">;</span> <span class="comment">// You can use std::array if your compiler supports it</span> -<span class="identifier">buf_t</span> <span class="identifier">buffer</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">buf_t</span><span class="special">>(</span><span class="identifier">i</span><span class="special">);</span> <span class="comment">// No dynamic memory allocation</span> -<span class="identifier">puts</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">file</span><span class="special">);</span> +<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">convert_strings_part</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">n</span><span class="special">)</span> +<span class="special">{</span> + <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">data</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span> +<span class="special">}</span> </pre> <p> - </p> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.generic_programming__boost_fusion_"></a><a class="link" href="examples.html#boost_lexical_cast.examples.generic_programming__boost_fusion_" title="Generic programming (Boost.Fusion)">Generic + programming (Boost.Fusion)</a> +</h3></div></div></div> +<p> + In this example we'll make a <code class="computeroutput"><span class="identifier">stringize</span></code> + method that accepts a sequence, converts each element of the sequence into + string and appends that string to the result. + </p> +<p> + Example is based on the example from the <a href="http://www.packtpub.com/boost-cplusplus-application-development-cookbook/book" target="_top">Boost + C++ Application Development Cookbook</a> by Antony Polukhin, ISBN 9781849514880. + </p> +<p> + Step 1: Making a functor that converts any type to a string and remembers + result: + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> + +<span class="keyword">struct</span> <span class="identifier">stringize_functor</span> <span class="special">{</span> +<span class="keyword">private</span><span class="special">:</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">result</span><span class="special">;</span> + +<span class="keyword">public</span><span class="special">:</span> + <span class="keyword">explicit</span> <span class="identifier">stringize_functor</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&</span> <span class="identifier">res</span><span class="special">)</span> + <span class="special">:</span> <span class="identifier">result</span><span class="special">(</span><span class="identifier">res</span><span class="special">)</span> + <span class="special">{}</span> + + <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> + <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> + <span class="identifier">result</span> <span class="special">+=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">v</span><span class="special">);</span> + <span class="special">}</span> +<span class="special">};</span> +</pre> +<p> + </p> +<p> + Step 2: Applying <code class="computeroutput"><span class="identifier">stringize_functor</span></code> + to each element in sequence: + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Sequence</span><span class="special">></span> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">stringize</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Sequence</span><span class="special">&</span> <span class="identifier">seq</span><span class="special">)</span> <span class="special">{</span> + <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">result</span><span class="special">;</span> + <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">seq</span><span class="special">,</span> <span class="identifier">stringize_functor</span><span class="special">(</span><span class="identifier">result</span><span class="special">));</span> + <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span> +<span class="special">}</span> +</pre> +<p> + </p> +<p> + Step 3: Using the <code class="computeroutput"><span class="identifier">stringize</span></code> + with different types: + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> + <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">decim</span><span class="special">(</span><span class="char">'-'</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="char">'e'</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span> + <span class="identifier">assert</span><span class="special">(</span><span class="identifier">stringize</span><span class="special">(</span><span class="identifier">decim</span><span class="special">)</span> <span class="special">==</span> <span class="string">"-10e5"</span><span class="special">);</span> + + <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">short</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">value_and_type</span><span class="special">(</span><span class="number">270</span><span class="special">,</span> <span class="string">"Kelvin"</span><span class="special">);</span> + <span class="identifier">assert</span><span class="special">(</span><span class="identifier">stringize</span><span class="special">(</span><span class="identifier">value_and_type</span><span class="special">)</span> <span class="special">==</span> <span class="string">"270Kelvin"</span><span class="special">);</span> +<span class="special">}</span> +</pre> +<p> + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.examples.generic_programming__boost_variant_"></a><a class="link" href="examples.html#boost_lexical_cast.examples.generic_programming__boost_variant_" title="Generic programming (Boost.Variant)">Generic + programming (Boost.Variant)</a> +</h3></div></div></div> +<p> + In this example we'll make a <code class="computeroutput"><span class="identifier">to_long_double</span></code> + method that converts value of the Boost.Variant to <code class="computeroutput"><span class="keyword">long</span> + <span class="keyword">double</span></code>. + </p> +<p> +</p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lexical_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">variant</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cassert</span><span class="special">></span> + +<span class="keyword">struct</span> <span class="identifier">to_long_double_functor</span><span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_visitor</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">></span> <span class="special">{</span> + <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> + <span class="keyword">long</span> <span class="keyword">double</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> + <span class="comment">// Lexical cast has many optimizations including optimizations for situations that usually </span> + <span class="comment">// occur in generic programming, like std::string to std::string or arithmetic type to arithmetic type conversion. </span> + <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">>(</span><span class="identifier">v</span><span class="special">);</span> + <span class="special">}</span> +<span class="special">};</span> + +<span class="comment">// Throws `boost::bad_lexical_cast` if value of the variant is not convertible to `long double`</span> +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">Variant</span><span class="special">></span> +<span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Variant</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span> <span class="special">{</span> + <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">to_long_double_functor</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">);</span> +<span class="special">}</span> + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> + <span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">v1</span><span class="special">(</span><span class="char">'0'</span><span class="special">),</span> <span class="identifier">v2</span><span class="special">(</span><span class="string">"10.0001"</span><span class="special">),</span> <span class="identifier">v3</span><span class="special">(</span><span class="number">1</span><span class="special">);</span> + + <span class="keyword">long</span> <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v1</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v2</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">to_long_double</span><span class="special">(</span><span class="identifier">v3</span><span class="special">);</span> + <span class="identifier">assert</span><span class="special">(</span><span class="identifier">sum</span> <span class="special">></span> <span class="number">11</span> <span class="special">&&</span> <span class="identifier">sum</span> <span class="special"><</span> <span class="number">11.1</span><span class="special">);</span> +<span class="special">}</span> +</pre> +<p> + </p> +</div> </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 © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011, 2012 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011-2014 Antony + Polukhin<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> diff --git a/doc/html/boost_lexical_cast/frequently_asked_questions.html b/doc/html/boost_lexical_cast/frequently_asked_questions.html index 83d560ccf1..681b9a0727 100644 --- a/doc/html/boost_lexical_cast/frequently_asked_questions.html +++ b/doc/html/boost_lexical_cast/frequently_asked_questions.html @@ -3,9 +3,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Frequently Asked Questions</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> +<link rel="up" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> <link rel="prev" href="synopsis.html" title="Synopsis"> <link rel="next" href="changes.html" title="Changes"> </head> @@ -27,9 +27,9 @@ <a name="boost_lexical_cast.frequently_asked_questions"></a><a class="link" href="frequently_asked_questions.html" title="Frequently Asked Questions">Frequently Asked Questions</a> </h2></div></div></div> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">int8_t</span><span class="special">>(</span><span class="string">"127"</span><span class="special">)</span></code> throw <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code>? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> The type <code class="computeroutput"><span class="identifier">int8_t</span></code> is a <code class="computeroutput"><span class="keyword">typedef</span></code> to <code class="computeroutput"><span class="keyword">char</span></code> or <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">char</span></code>. Lexical conversion to @@ -41,10 +41,10 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">>(</span><span class="string">"127"</span><span class="special">)</span></code> throw <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code>? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Lexical conversion to any char type is simply reading a byte from source. But since the source has more than one byte, the exception is thrown. Please use other @@ -54,24 +54,24 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> What does <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span></code> of an <code class="computeroutput"><span class="identifier">int8_t</span></code> or <code class="computeroutput"><span class="identifier">uint8_t</span></code> not do what I expect? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> As above, note that int8_t and uint8_t are actually chars and are formatted as such. To avoid this, cast to an integer type first: <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">n</span><span class="special">));</span></code> </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> The implementation always resets the <code class="computeroutput"><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">skipws</span></code> flag of an underlying stream object. It breaks my <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code> that works only in presence of this flag. Can you remove code that resets the flag? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> May be in a future version. There is no requirement in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1973.html" target="_top">Lexical Conversion Library Proposal for TR2, N1973 by Kevlin Henney and Beman @@ -79,14 +79,15 @@ Conversion Library Proposal for TR2, N1973</a> is not yet accepted by the committee. By the way, it's a great opportunity to make your <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code> - conform to the standard. Read a good C++ book, study <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sentry</span></code> and <a href="../../../libs/io/doc/ios_state.html" target="_top"><code class="computeroutput"><span class="identifier">ios_state_saver</span></code></a>. + more general. Read a good C++ book, study <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">sentry</span></code> + and <a href="../../../libs/io/doc/ios_state.html" target="_top"><code class="computeroutput"><span class="identifier">ios_state_saver</span></code></a>. </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">>(</span><span class="string">"-1"</span><span class="special">);</span></code> does not throw, but outputs 4294967295? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> has the behavior of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span></code>, which uses <code class="computeroutput"><span class="identifier">num_get</span></code> @@ -100,10 +101,10 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">L</span><span class="char">'A'</span><span class="special">);</span></code> outputs 65 and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">>(</span><span class="identifier">L</span><span class="string">"65"</span><span class="special">);</span></code> does not throw? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> If you are using an old version of Visual Studio or compile code with /Zc:wchar_t- flag, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> sees single <code class="computeroutput"><span class="keyword">wchar_t</span></code> character as <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>. @@ -112,9 +113,9 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> Why <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="string">"-1.#IND"</span><span class="special">);</span></code> throws <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bad_lexical_cast</span></code>? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> <code class="computeroutput"><span class="string">"-1.#IND"</span></code> is a compiler extension, that violates standard. You shall input <code class="computeroutput"><span class="string">"-nan"</span></code>, <code class="computeroutput"><span class="string">"nan"</span></code>, <code class="computeroutput"><span class="string">"inf"</span></code> @@ -125,22 +126,25 @@ </li></ul></div> </li></ul></div> <pre class="programlisting"></pre> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> <span class="bold"><strong>Question:</strong></span> What is the fastest way to convert a non zero terminated string or a substring using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>? - <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"> + <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"> <span class="bold"><strong>Answer:</strong></span> Use <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span></code> - for conversion. For example, if you whant to convert to <code class="computeroutput"><span class="keyword">int</span></code> two characters from a string - <code class="computeroutput"><span class="identifier">str</span></code>, you shall write - <code class="computeroutput"><span class="identifier">lexacal_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">make_iterator_range</span><span class="special">(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> - <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">()</span> - <span class="special">+</span> <span class="number">2</span><span class="special">));</span></code>. + for conversion or <code class="computeroutput"><span class="identifier">lexical_cast</span></code> + overload with two parameters. For example, if you whant to convert + to <code class="computeroutput"><span class="keyword">int</span></code> two characters + from a string <code class="computeroutput"><span class="identifier">str</span></code>, + you shall write <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">make_iterator_range</span><span class="special">(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">()</span> <span class="special">+</span> <span class="number">2</span><span class="special">));</span></code> + or <code class="computeroutput"><span class="identifier">lexical_cast</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">data</span><span class="special">(),</span> + <span class="number">2</span><span class="special">);</span></code>. </li></ul></div> </li></ul></div> </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 © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011, 2012 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011-2014 Antony + Polukhin<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> diff --git a/doc/html/boost_lexical_cast/performance.html b/doc/html/boost_lexical_cast/performance.html index a55a83c2fc..6954f90d70 100644 --- a/doc/html/boost_lexical_cast/performance.html +++ b/doc/html/boost_lexical_cast/performance.html @@ -3,11 +3,11 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Performance</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> +<link rel="up" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> <link rel="prev" href="changes.html" title="Changes"> -<link rel="next" href="../move.html" title="Chapter 16. Boost.Move"> +<link rel="next" href="../lockfree.html" title="Chapter 18. Boost.Lockfree"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table cellpadding="2" width="100%"><tr> @@ -20,13 +20,13 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.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="../move.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.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="../lockfree.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_lexical_cast.performance"></a><a class="link" href="performance.html" title="Performance">Performance</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.tests_description">Tests description</a></span></dt> <dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_">Clang @@ -37,6 +37,8 @@ C++ version 4.5.3</a></span></dt> <dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.gnu_c___version_4_4_7">GNU C++ version 4.4.7</a></span></dt> +<dt><span class="section"><a href="performance.html#boost_lexical_cast.performance.microsoft_visual_c___version_11_0">Microsoft + Visual C++ version 11.0</a></span></dt> </dl></div> <p> In most cases <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> is faster than <code class="computeroutput"><span class="identifier">scanf</span></code>, <code class="computeroutput"><span class="identifier">printf</span></code>, @@ -53,7 +55,7 @@ of the following code blocks: </p> <div class="table"> -<a name="boost_lexical_cast.performance.tests_description.legend"></a><p class="title"><b>Table 15.1. Tests source code</b></p> +<a name="boost_lexical_cast.performance.tests_description.legend"></a><p class="title"><b>Table 17.1. Tests source code</b></p> <div class="table-contents"><table class="table" summary="Tests source code"> <colgroup> <col> @@ -159,7 +161,7 @@ version 3.0 (tags/RELEASE_30/final)</a> </h3></div></div></div> <div class="table"> -<a name="boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_.id"></a><p class="title"><b>Table 15.2. Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))</b></p> +<a name="boost_lexical_cast.performance.clang_version_3_0__tags_release_30_final_.id"></a><p class="title"><b>Table 17.2. Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))</b></p> <div class="table-contents"><table class="table" summary="Performance Table ( Clang version 3.0 (tags/RELEASE_30/final))"> <colgroup> <col> @@ -3420,7 +3422,7 @@ C++ version 4.6.3</a> </h3></div></div></div> <div class="table"> -<a name="boost_lexical_cast.performance.gnu_c___version_4_6_3.id"></a><p class="title"><b>Table 15.3. Performance Table ( GNU C++ version 4.6.3)</b></p> +<a name="boost_lexical_cast.performance.gnu_c___version_4_6_3.id"></a><p class="title"><b>Table 17.3. Performance Table ( GNU C++ version 4.6.3)</b></p> <div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.6.3)"> <colgroup> <col> @@ -6681,7 +6683,7 @@ C++ version 4.5.3</a> </h3></div></div></div> <div class="table"> -<a name="boost_lexical_cast.performance.gnu_c___version_4_5_3.id"></a><p class="title"><b>Table 15.4. Performance Table ( GNU C++ version 4.5.3)</b></p> +<a name="boost_lexical_cast.performance.gnu_c___version_4_5_3.id"></a><p class="title"><b>Table 17.4. Performance Table ( GNU C++ version 4.5.3)</b></p> <div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.5.3)"> <colgroup> <col> @@ -9942,7 +9944,7 @@ C++ version 4.4.7</a> </h3></div></div></div> <div class="table"> -<a name="boost_lexical_cast.performance.gnu_c___version_4_4_7.id"></a><p class="title"><b>Table 15.5. Performance Table ( GNU C++ version 4.4.7)</b></p> +<a name="boost_lexical_cast.performance.gnu_c___version_4_4_7.id"></a><p class="title"><b>Table 17.5. Performance Table ( GNU C++ version 4.4.7)</b></p> <div class="table-contents"><table class="table" summary="Performance Table ( GNU C++ version 4.4.7)"> <colgroup> <col> @@ -13197,10 +13199,3272 @@ </div> <br class="table-break"> </div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.performance.microsoft_visual_c___version_11_0"></a><a class="link" href="performance.html#boost_lexical_cast.performance.microsoft_visual_c___version_11_0" title="Microsoft Visual C++ version 11.0">Microsoft + Visual C++ version 11.0</a> +</h3></div></div></div> +<div class="table"> +<a name="boost_lexical_cast.performance.microsoft_visual_c___version_11_0.id"></a><p class="title"><b>Table 17.6. Performance Table ( Microsoft Visual C++ version 11.0)</b></p> +<div class="table-contents"><table class="table" summary="Performance Table ( Microsoft Visual C++ version 11.0)"> +<colgroup> +<col> +<col> +<col> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + From->To + </p> + </th> +<th> + <p> + lexical_cast + </p> + </th> +<th> + <p> + std::stringstream with construction + </p> + </th> +<th> + <p> + std::stringstream without construction + </p> + </th> +<th> + <p> + scanf/printf + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + string->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 43 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 43 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 42 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 49 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 45 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>14</strong></span> !!! + </p> + </td> +<td> + <p> + 586 + </p> + </td> +<td> + <p> + 559 + </p> + </td> +<td> + <p> + 37 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->double + </p> + </td> +<td> + <p> + 601 + </p> + </td> +<td> + <p> + 618 + </p> + </td> +<td> + <p> + 592 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + string->long double + </p> + </td> +<td> + <p> + 629 + </p> + </td> +<td> + <p> + 645 + </p> + </td> +<td> + <p> + 618 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + string->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 52 + </p> + </td> +<td> + <p> + 28 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 34 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + string->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 31 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + string->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 50 + </p> + </td> +<td> + <p> + 24 + </p> + </td> +<td> + <p> + 9 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 50 + </p> + </td> +<td> + <p> + 24 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + string->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 50 + </p> + </td> +<td> + <p> + 24 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + int->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 86 + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + short->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 86 + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + long int->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 87 + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + long long->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 88 + </p> + </td> +<td> + <p> + 62 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned int->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 87 + </p> + </td> +<td> + <p> + 60 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned short->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 91 + </p> + </td> +<td> + <p> + 63 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned long int->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 91 + </p> + </td> +<td> + <p> + 62 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned long long->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>9</strong></span> !!! + </p> + </td> +<td> + <p> + 88 + </p> + </td> +<td> + <p> + 60 + </p> + </td> +<td> + <p> + 13 + </p> + </td> +</tr> +<tr> +<td> + <p> + float->string + </p> + </td> +<td> + <p> + 73 + </p> + </td> +<td> + <p> + 167 + </p> + </td> +<td> + <p> + 137 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>56</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + double->string + </p> + </td> +<td> + <p> + 77 + </p> + </td> +<td> + <p> + 176 + </p> + </td> +<td> + <p> + 144 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>64</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + long double->string + </p> + </td> +<td> + <p> + 79 + </p> + </td> +<td> + <p> + 175 + </p> + </td> +<td> + <p> + 143 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>63</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 43 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 43 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 44 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 48 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 45 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>14</strong></span> !!! + </p> + </td> +<td> + <p> + 586 + </p> + </td> +<td> + <p> + 560 + </p> + </td> +<td> + <p> + 37 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->double + </p> + </td> +<td> + <p> + 598 + </p> + </td> +<td> + <p> + 617 + </p> + </td> +<td> + <p> + 597 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>40</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->long double + </p> + </td> +<td> + <p> + 635 + </p> + </td> +<td> + <p> + 653 + </p> + </td> +<td> + <p> + 622 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 53 + </p> + </td> +<td> + <p> + 28 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 35 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + char*->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>3</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 30 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 42 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 48 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 45 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>14</strong></span> !!! + </p> + </td> +<td> + <p> + 589 + </p> + </td> +<td> + <p> + 564 + </p> + </td> +<td> + <p> + 38 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->double + </p> + </td> +<td> + <p> + 601 + </p> + </td> +<td> + <p> + 615 + </p> + </td> +<td> + <p> + 588 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->long double + </p> + </td> +<td> + <p> + 628 + </p> + </td> +<td> + <p> + 644 + </p> + </td> +<td> + <p> + 620 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>38</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 28 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 36 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + unsigned char*->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>3</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 30 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 43 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 42 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 48 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>14</strong></span> !!! + </p> + </td> +<td> + <p> + 586 + </p> + </td> +<td> + <p> + 562 + </p> + </td> +<td> + <p> + 37 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->double + </p> + </td> +<td> + <p> + 603 + </p> + </td> +<td> + <p> + 615 + </p> + </td> +<td> + <p> + 589 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->long double + </p> + </td> +<td> + <p> + 630 + </p> + </td> +<td> + <p> + 644 + </p> + </td> +<td> + <p> + 623 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>40</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 28 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 36 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + signed char*->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>3</strong></span> !!! + </p> + </td> +<td> + <p> + 54 + </p> + </td> +<td> + <p> + 30 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 74 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 75 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 74 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 98 + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 103 + </p> + </td> +<td> + <p> + 72 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 111 + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 98 + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>7</strong></span> !!! + </p> + </td> +<td> + <p> + 103 + </p> + </td> +<td> + <p> + 76 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 104 + </p> + </td> +<td> + <p> + 75 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>7</strong></span> !!! + </p> + </td> +<td> + <p> + 104 + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 99 + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>13</strong></span> !!! + </p> + </td> +<td> + <p> + 123 + </p> + </td> +<td> + <p> + 93 + </p> + </td> +<td> + <p> + 37 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->double + </p> + </td> +<td> + <p> + 603 + </p> + </td> +<td> + <p> + 111 + </p> + </td> +<td> + <p> + 82 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>38</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->long double + </p> + </td> +<td> + <p> + 629 + </p> + </td> +<td> + <p> + 116 + </p> + </td> +<td> + <p> + 83 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>38</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 82 + </p> + </td> +<td> + <p> + 52 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 83 + </p> + </td> +<td> + <p> + 56 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + iterator_range<char*>->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 81 + </p> + </td> +<td> + <p> + 53 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 7 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->unsigned char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 41 + </p> + </td> +<td> + <p> + 17 + </p> + </td> +<td> + <p> + 8 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 73 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 73 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 75 + </p> + </td> +<td> + <p> + 48 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 73 + </p> + </td> +<td> + <p> + 48 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->unsigned int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 73 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->unsigned short + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 74 + </p> + </td> +<td> + <p> + 50 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->unsigned long int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 71 + </p> + </td> +<td> + <p> + 46 + </p> + </td> +<td> + <p> + 10 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->unsigned long long + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>8</strong></span> !!! + </p> + </td> +<td> + <p> + 70 + </p> + </td> +<td> + <p> + 47 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->float + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>14</strong></span> !!! + </p> + </td> +<td> + <p> + 586 + </p> + </td> +<td> + <p> + 567 + </p> + </td> +<td> + <p> + 37 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->double + </p> + </td> +<td> + <p> + 599 + </p> + </td> +<td> + <p> + 624 + </p> + </td> +<td> + <p> + 590 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->long double + </p> + </td> +<td> + <p> + 632 + </p> + </td> +<td> + <p> + 643 + </p> + </td> +<td> + <p> + 618 + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>37</strong></span> !!! + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->array<char, 50> + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>1</strong></span> !!! + </p> + </td> +<td> + <p> + 52 + </p> + </td> +<td> + <p> + 28 + </p> + </td> +<td> + <p> + 11 + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>2</strong></span> !!! + </p> + </td> +<td> + <p> + 59 + </p> + </td> +<td> + <p> + 34 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + array<char, 50>->container::string + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong>3</strong></span> !!! + </p> + </td> +<td> + <p> + 55 + </p> + </td> +<td> + <p> + 30 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + int->int + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 105 + </p> + </td> +<td> + <p> + 79 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + float->double + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 226 + </p> + </td> +<td> + <p> + 188 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +<tr> +<td> + <p> + char->signed char + </p> + </td> +<td> + <p> + !!! <span class="bold"><strong><1</strong></span> !!! + </p> + </td> +<td> + <p> + 40 + </p> + </td> +<td> + <p> + 16 + </p> + </td> +<td> + <p> + --- + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<br class="table-break"> +</div> </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 © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011, 2012 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011-2014 Antony + Polukhin<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> @@ -13208,7 +16472,7 @@ </tr></table> <hr> <div class="spirit-nav"> -<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.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="../move.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> +<a accesskey="p" href="changes.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_lexical_cast.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="../lockfree.html"><img src="../../../doc/src/images/next.png" alt="Next"></a> </div> </body> </html> diff --git a/doc/html/boost_lexical_cast/synopsis.html b/doc/html/boost_lexical_cast/synopsis.html index 5508b3c6a8..4cfb2d7e98 100644 --- a/doc/html/boost_lexical_cast/synopsis.html +++ b/doc/html/boost_lexical_cast/synopsis.html @@ -3,9 +3,9 @@ <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Synopsis</title> <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css"> -<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset"> -<link rel="up" href="../boost_lexical_cast.html" title="Chapter 15. Boost.Lexical_Cast 1.0"> +<link rel="up" href="../boost_lexical_cast.html" title="Chapter 17. Boost.Lexical_Cast 1.0"> <link rel="prev" href="examples.html" title="Examples"> <link rel="next" href="frequently_asked_questions.html" title="Frequently Asked Questions"> </head> @@ -26,9 +26,10 @@ <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="boost_lexical_cast.synopsis"></a><a class="link" href="synopsis.html" title="Synopsis">Synopsis</a> </h2></div></div></div> -<div class="toc"><dl> +<div class="toc"><dl class="toc"> <dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.lexical_cast">lexical_cast</a></span></dt> <dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.bad_lexical_cast">bad_lexical_cast</a></span></dt> +<dt><span class="section"><a href="synopsis.html#boost_lexical_cast.synopsis.try_lexical_convert">try_lexical_convert</a></span></dt> </dl></div> <p> Library features defined in <a href="../../../boost/lexical_cast.hpp" target="_top">boost/lexical_cast.hpp</a>: @@ -36,9 +37,23 @@ <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">class</span> <span class="identifier">bad_lexical_cast</span><span class="special">;</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">></span> <span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span><span class="special">&</span> <span class="identifier">arg</span><span class="special">);</span> -<span class="special">}</span> + + <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">></span> + <span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span> + + <span class="keyword">namespace</span> <span class="identifier">conversion</span> + <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">></span> + <span class="keyword">bool</span> <span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span><span class="special">&</span> <span class="identifier">arg</span><span class="special">,</span> <span class="identifier">Target</span><span class="special">&</span> <span class="identifier">result</span><span class="special">);</span> + + <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">AnyCharacterType</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">></span> + <span class="keyword">bool</span> <span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">,</span> <span class="identifier">Target</span><span class="special">&</span> <span class="identifier">result</span><span class="special">);</span> + + <span class="special">}</span> <span class="comment">// namespace conversion</span> +<span class="special">}</span> <span class="comment">// namespace boost</span> </pre> <p> </p> @@ -61,9 +76,21 @@ exception is thrown. </p> <p> - The requirements on the argument and result types are: +</p> +<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">></span> + <span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">AnyCharacterType</span><span class="special">*</span> <span class="identifier">chars</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">count</span><span class="special">);</span> +</pre> +<p> + Takes an array of <code class="computeroutput"><span class="identifier">count</span></code> characters + as input parameter and streams them out as a Target object. If the conversion + is unsuccessful, a <code class="computeroutput"><span class="identifier">bad_lexical_cast</span></code> + exception is thrown. This call may be useful for processing nonzero terminated + array of characters or processing just some part of character array. </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<p> + The requirements on the argument and result types for both functions are: + </p> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> Source is OutputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wostream</span></code> object on the left hand side and an instance of the argument type on @@ -85,24 +112,23 @@ <p> The character type of the underlying stream is assumed to be <code class="computeroutput"><span class="keyword">char</span></code> unless either the <code class="computeroutput"><span class="identifier">Source</span></code> or the <code class="computeroutput"><span class="identifier">Target</span></code> requires wide-character - streaming, in which case the underlying stream uses <code class="computeroutput"><span class="keyword">wchar_t</span></code>, - <code class="computeroutput"><span class="identifier">char16_t</span></code> or <code class="computeroutput"><span class="identifier">char32_t</span></code>. Wide-character streaming is currently - detected for: + streaming, in which case the underlying stream uses <code class="computeroutput"><span class="keyword">wchar_t</span></code>. + Following types also can use <code class="computeroutput"><span class="keyword">char16_t</span></code> + or <code class="computeroutput"><span class="keyword">char32_t</span></code> for wide-character + streaming: </p> -<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"> - Single character: <code class="computeroutput"><span class="keyword">wchar_t</span></code>, - <code class="computeroutput"><span class="identifier">char16_t</span></code>, <code class="computeroutput"><span class="identifier">char32_t</span></code> + Single character: <code class="computeroutput"><span class="keyword">char16_t</span></code>, + <code class="computeroutput"><span class="keyword">char32_t</span></code> </li> <li class="listitem"> - Arrays of characters: <code class="computeroutput"><span class="keyword">wchar_t</span> - <span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">char16_t</span> - <span class="special">*</span></code>, <code class="computeroutput"><span class="identifier">char32_t</span> - <span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">const</span> - <span class="keyword">wchar_t</span> <span class="special">*</span></code>, - <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">char16_t</span> + Arrays of characters: <code class="computeroutput"><span class="keyword">char16_t</span> + <span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">char32_t</span> <span class="special">*</span></code>, <code class="computeroutput"><span class="keyword">const</span> - <span class="identifier">char32_t</span> <span class="special">*</span></code> + <span class="keyword">char16_t</span> <span class="special">*</span></code>, + <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char32_t</span> + <span class="special">*</span></code> </li> <li class="listitem"> Strings: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">containers</span><span class="special">::</span><span class="identifier">basic_string</span></code> @@ -161,10 +187,64 @@ Exception used to indicate runtime lexical_cast failure. </p> </div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_lexical_cast.synopsis.try_lexical_convert"></a><a class="link" href="synopsis.html#boost_lexical_cast.synopsis.try_lexical_convert" title="try_lexical_convert">try_lexical_convert</a> +</h3></div></div></div> +<p> + <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> remains the main interface + for lexical conversions. It must be used by default in most cases. However + some developers wish to make their own conversion functions, reusing all + the optimizations of the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code>. + That's where the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span></code> function steps in. + </p> +<p> + <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code> returns + <code class="computeroutput"><span class="keyword">true</span></code> if conversion succeeded, + otherwise returns <code class="computeroutput"><span class="keyword">false</span></code>. If + conversion failed and <code class="computeroutput"><span class="keyword">false</span></code> + was returned, state of <code class="computeroutput"><span class="identifier">result</span></code> + output variable is undefined. + </p> +<p> + Actually, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span></code> is implemented using <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code>: +</p> +<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Target</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Source</span><span class="special">></span> +<span class="keyword">inline</span> <span class="identifier">Target</span> <span class="identifier">lexical_cast</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Source</span> <span class="special">&</span><span class="identifier">arg</span><span class="special">)</span> +<span class="special">{</span> + <span class="identifier">Target</span> <span class="identifier">result</span><span class="special">;</span> + + <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">try_lexical_convert</span><span class="special">(</span><span class="identifier">arg</span><span class="special">,</span> <span class="identifier">result</span><span class="special">))</span> + <span class="keyword">throw</span> <span class="identifier">bad_lexical_cast</span><span class="special">();</span> + + <span class="keyword">return</span> <span class="identifier">result</span><span class="special">;</span> +<span class="special">}</span> +</pre> +<p> + </p> +<p> + <code class="computeroutput"><span class="identifier">try_lexical_convert</span></code> relaxes + the CopyConstructible and DefaultConstructible requirements for <code class="computeroutput"><span class="identifier">Target</span></code> type. Following requirements for + <code class="computeroutput"><span class="identifier">Target</span></code> and <code class="computeroutput"><span class="identifier">Source</span></code> remain: + </p> +<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> +<li class="listitem"> + Source must be OutputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wostream</span></code> + object on the left hand side and an instance of the argument type on + the right. + </li> +<li class="listitem"> + Target must be InputStreamable, meaning that an <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code> is defined that takes a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wistream</span></code> + object on the left hand side and an instance of the result type on the + right. + </li> +</ul></div> +</div> </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 © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011, 2012 Antony Polukhin<p> +<td align="right"><div class="copyright-footer">Copyright © 2000-2005 Kevlin Henney<br>Copyright © 2006-2010 Alexander Nasonov<br>Copyright © 2011-2014 Antony + Polukhin<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> |