1 <?xml version=
"1.0" encoding=
"utf-8" ?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en" lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
6 <meta name=
"generator" content=
"Docutils 0.7: http://docutils.sourceforge.net/" />
7 <title>The MPL Reference Manual: string
</title>
8 <link rel=
"stylesheet" href=
"../style.css" type=
"text/css" />
10 <body class=
"docframe refmanual">
11 <table class=
"header"><tr class=
"header"><td class=
"header-group navigation-bar"><span class=
"navigation-group"><a href=
"./set-c.html" class=
"navigation-link">Prev
</a> <a href=
"./views.html" class=
"navigation-link">Next
</a></span><span class=
"navigation-group-separator"> |
</span><span class=
"navigation-group"><a href=
"./set-c.html" class=
"navigation-link">Back
</a> Along
</span><span class=
"navigation-group-separator"> |
</span><span class=
"navigation-group"><a href=
"./classes.html" class=
"navigation-link">Up
</a> <a href=
"../refmanual.html" class=
"navigation-link">Home
</a></span><span class=
"navigation-group-separator"> |
</span><span class=
"navigation-group"><a href=
"./refmanual_toc.html" class=
"navigation-link">Full TOC
</a></span></td>
12 <td class=
"header-group page-location"><a href=
"../refmanual.html" class=
"navigation-link">Front Page
</a> /
<a href=
"./sequences.html" class=
"navigation-link">Sequences
</a> /
<a href=
"./classes.html" class=
"navigation-link">Classes
</a> /
<a href=
"./string.html" class=
"navigation-link">string
</a></td>
13 </tr></table><div class=
"header-separator"></div>
14 <div class=
"section" id=
"string">
15 <h1><a class=
"toc-backref" href=
"./classes.html#id1415">string
</a></h1>
16 <div class=
"section" id=
"id112">
17 <h3><a class=
"subsection-title" href=
"#description" name=
"description">Description
</a></h3>
18 <p><tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> is a
<a class=
"reference internal" href=
"./variadic-sequence.html">variadic
</a>,
<a class=
"reference internal" href=
"./bidirectional-sequence.html">bidirectional
</a>,
<a class=
"reference internal" href=
"./extensible-sequence.html">extensible
</a> <a class=
"reference internal" href=
"./integral-sequence-wrapper.html">Integral Sequence Wrapper
</a> of
19 characters that supports amortized constant-time insertion and removal of elements at both ends,
20 and linear-time insertion and removal of elements in the middle. The parameters to
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt>
21 are multi-character literals, giving a somewhat readable syntax for compile-time strings.
22 <tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> can also be an argument to the
<tt class=
"literal"><span class=
"pre"><a href=
"./c-str.html" class=
"identifier">c_str
</a></span></tt> metafunction, which generates a
23 null-terminated character array that facilitates interoperability with runtime string
24 processing routines.
</p>
26 <div class=
"section" id=
"id115">
27 <h3><a class=
"subsection-title" href=
"#header" name=
"header">Header
</a></h3>
28 <table border=
"1" class=
"docutils table">
33 <thead valign=
"bottom">
34 <tr><th class=
"head">Sequence form
</th>
35 <th class=
"head">Header
</th>
40 <td><tt class=
"literal"><span class=
"pre">#include
<<a href=
"../../../../boost/mpl/string.hpp" class=
"header">boost/mpl/string.hpp
</a>></span></tt></td>
45 <div class=
"section" id=
"id116">
46 <h3><a class=
"subsection-title" href=
"#model-of" name=
"model-of">Model of
</a></h3>
48 <li><a class=
"reference internal" href=
"./integral-sequence-wrapper.html">Integral Sequence Wrapper
</a></li>
49 <li><a class=
"reference internal" href=
"./variadic-sequence.html">Variadic Sequence
</a></li>
50 <li><a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a></li>
51 <li><a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a></li>
52 <li><a class=
"reference internal" href=
"./back-extensible-sequence.html">Back Extensible Sequence
</a></li>
53 <li><a class=
"reference internal" href=
"./front-extensible-sequence.html">Front Extensible Sequence
</a></li>
56 <div class=
"section" id=
"id117">
57 <h3><a class=
"subsection-title" href=
"#expression-semantics" name=
"expression-semantics">Expression semantics
</a></h3>
58 <p>In the following table,
<tt class=
"literal"><span class=
"pre">s
</span></tt> is an instance of
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt>,
<tt class=
"literal"><span class=
"pre">pos
</span></tt> and
<tt class=
"literal"><span class=
"pre">last
</span></tt> are iterators
59 into
<tt class=
"literal"><span class=
"pre">s
</span></tt>,
<tt class=
"literal"><span class=
"pre">r
</span></tt> is a
<a class=
"reference internal" href=
"./forward-sequence.html">Forward Sequence
</a> of characters,
<tt class=
"literal"><span class=
"pre">n
</span></tt> and
<tt class=
"literal"><span class=
"pre">x
</span></tt> are
<a class=
"reference internal" href=
"./integral-constant.html">Integral Constant
</a>s,
60 and
<em>c
</em><sub>1</sub>,
<em>c
</em><sub>2</sub>,...
<em>c
</em><sub>n
</sub> are arbitrary (multi-)characters.
</p>
61 <table border=
"1" class=
"docutils table">
66 <thead valign=
"bottom">
67 <tr><th class=
"head">Expression
</th>
68 <th class=
"head">Semantics
</th>
72 <tr><td><pre class=
"first last literal-block">
73 <a href=
"./string.html" class=
"identifier">string
</a><<em>c
</em><sub>1</sub>,
<em>c
</em><sub>2</sub>,...
<em>c
</em><sub>n
</sub>>
76 <td><tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of characters
<em>c
</em><sub>1</sub>,
<em>c
</em><sub>2</sub>,...
<em>c
</em><sub>n
</sub>; see
77 <a class=
"reference internal" href=
"./variadic-sequence.html">Variadic Sequence
</a>.
</td>
79 <tr><td><pre class=
"first last literal-block">
80 <a href=
"./string.html" class=
"identifier">string
</a><<em>c
</em><sub>1</sub>,
<em>c
</em><sub>2</sub>,...
<em>c
</em><sub>n
</sub>>::type
83 <td>Identical to
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a><</span></tt><em>c
</em><sub>1</sub>,
<em>c
</em><sub>2</sub>,...
<em>c
</em><sub>n
</sub><tt class=
"literal"><span class=
"pre">></span></tt>;
84 see
<a class=
"reference internal" href=
"./variadic-sequence.html">Variadic Sequence
</a>.
</td>
86 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt></td>
87 <td>An iterator pointing to the beginning of
<tt class=
"literal"><span class=
"pre">s
</span></tt>;
88 see
<a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
90 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt></td>
91 <td>An iterator pointing to the end of
<tt class=
"literal"><span class=
"pre">s
</span></tt>;
92 see
<a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
94 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./size.html" class=
"identifier">size
</a><s
>::type
</span></tt></td>
95 <td>The size of
<tt class=
"literal"><span class=
"pre">s
</span></tt>; see
<a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
97 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./empty.html" class=
"identifier">empty
</a><s
>::type
</span></tt></td>
98 <td>A boolean
<a class=
"reference internal" href=
"./integral-constant.html">Integral Constant
</a> <tt class=
"literal"><span class=
"pre">c
</span></tt> such that
99 <tt class=
"literal"><span class=
"pre">c::value
</span> <span class=
"pre">==
</span> <span class=
"pre">true
</span></tt> if and only if the sequence is empty;
100 see
<a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
102 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./front.html" class=
"identifier">front
</a><s
>::type
</span></tt></td>
103 <td>The first element in
<tt class=
"literal"><span class=
"pre">s
</span></tt>; see
104 <a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
106 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./back.html" class=
"identifier">back
</a><s
>::type
</span></tt></td>
107 <td>The last element in
<tt class=
"literal"><span class=
"pre">s
</span></tt>; see
108 <a class=
"reference internal" href=
"./bidirectional-sequence.html">Bidirectional Sequence
</a>.
</td>
110 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./insert.html" class=
"identifier">insert
</a><s,pos,x
>::type
</span></tt></td>
111 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
112 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre">pos
</span></tt>),
<tt class=
"literal"><span class=
"pre">x
</span></tt>,
113 [
<tt class=
"literal"><span class=
"pre">pos
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>); see
<a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a>.
</td>
115 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./insert-range.html" class=
"identifier">insert_range
</a><s,pos,r
>::type
</span></tt></td>
116 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
117 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre">pos
</span></tt>),
118 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><r
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><r
>::type
</span></tt>)
119 [
<tt class=
"literal"><span class=
"pre">pos
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>); see
<a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a>.
</td>
121 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./erase.html" class=
"identifier">erase
</a><s,pos
>::type
</span></tt></td>
122 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
123 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre">pos
</span></tt>),
124 [
<tt class=
"literal"><span class=
"pre"><a href=
"./next.html" class=
"identifier">next
</a><pos
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>); see
125 <a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a>.
</td>
127 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./erase.html" class=
"identifier">erase
</a><s,pos,last
>::type
</span></tt></td>
128 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
129 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre">pos
</span></tt>),
130 [
<tt class=
"literal"><span class=
"pre">last
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>); see
<a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a>.
</td>
132 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./clear.html" class=
"identifier">clear
</a><s
>::type
</span></tt></td>
133 <td>An empty
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt>; see
<a class=
"reference internal" href=
"./extensible-sequence.html">Extensible Sequence
</a>.
</td>
135 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./push-back.html" class=
"identifier">push_back
</a><s,x
>::type
</span></tt></td>
136 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
137 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>),
<tt class=
"literal"><span class=
"pre">x
</span></tt>;
138 see
<a class=
"reference internal" href=
"./back-extensible-sequence.html">Back Extensible Sequence
</a>.
</td>
140 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./pop-back.html" class=
"identifier">pop_back
</a><s
>::type
</span></tt></td>
141 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
142 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./prior.html" class=
"identifier">prior
</a><</span> <span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span> <span class=
"pre">>::type
</span></tt>);
143 see
<a class=
"reference internal" href=
"./back-extensible-sequence.html">Back Extensible Sequence
</a>.
</td>
145 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./push-front.html" class=
"identifier">push_front
</a><s,x
>::type
</span></tt></td>
146 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
147 [
<tt class=
"literal"><span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>),
<tt class=
"literal"><span class=
"pre">x
</span></tt>; see
<a class=
"reference internal" href=
"./front-extensible-sequence.html">Front Extensible Sequence
</a>.
</td>
149 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./pop-front.html" class=
"identifier">pop_front
</a><s
>::type
</span></tt></td>
150 <td>A new
<tt class=
"literal"><span class=
"pre"><a href=
"./string.html" class=
"identifier">string
</a></span></tt> of following elements:
151 [
<tt class=
"literal"><span class=
"pre"><a href=
"./next.html" class=
"identifier">next
</a><</span> <span class=
"pre"><a href=
"./begin.html" class=
"identifier">begin
</a><s
>::type
</span> <span class=
"pre">>::type
</span></tt>,
<tt class=
"literal"><span class=
"pre"><a href=
"./end.html" class=
"identifier">end
</a><s
>::type
</span></tt>);
152 see
<a class=
"reference internal" href=
"./front-extensible-sequence.html">Front Extensible Sequence
</a>.
</td>
154 <tr><td><tt class=
"literal"><span class=
"pre"><a href=
"./c-str.html" class=
"identifier">c_str
</a><s
>::value
</span></tt></td>
155 <td>A null-terminated byte string such that
156 <tt class=
"literal"><span class=
"pre"><a href=
"./c-str.html" class=
"identifier">c_str
</a><s
>::value[
</span></tt><em>n
</em><tt class=
"literal"><span class=
"pre">]
</span></tt> is equal to the
<em>n
</em>-th
157 character in
<tt class=
"literal"><span class=
"pre">s
</span></tt>, and
158 <tt class=
"literal"><span class=
"pre"><a href=
"./c-str.html" class=
"identifier">c_str
</a><s
>::value[
<a href=
"./size.html" class=
"identifier">size
</a><s
>::type::value]
</span></tt> is
<tt class=
"literal"><span class=
"pre">'\
0'
</span></tt>.
</td>
163 <div class=
"section" id=
"id118">
164 <h3><a class=
"subsection-title" href=
"#example" name=
"example">Example
</a></h3>
165 <pre class=
"literal-block">
166 typedef mpl::
<a href=
"./string.html" class=
"identifier">string
</a><'hell','o wo','rld'
> hello;
167 typedef mpl::
<a href=
"./push-back.html" class=
"identifier">push_back
</a><hello, mpl::
<a href=
"./char.html" class=
"identifier">char_
</a><'!'
> >::type hello2;
169 BOOST_ASSERT(
0 == std::strcmp(mpl::
<a href=
"./c-str.html" class=
"identifier">c_str
</a><hello2
>::value,
"hello world!
"));
172 <div class="section
" id="id119
">
173 <h3><a class="subsection-title
" href="#see-also
" name="see-also
">See also</a></h3>
174 <p><a class="reference internal
" href="./sequences.html
">Sequences</a>, <a class="reference internal
" href="./variadic-sequence.html
">Variadic Sequence</a>, <a class="reference internal
" href="./bidirectional-sequence.html
">Bidirectional Sequence</a>, <a class="reference internal
" href="./extensible-sequence.html
">Extensible Sequence</a>, <a class="reference internal
" href="./integral-sequence-wrapper.html
">Integral Sequence Wrapper</a>, <a class="reference internal
" href="./char.html
">char_</a>, <a class="reference internal
" href="./c-str.html
">c_str</a></p>
178 <div class="footer-separator
"></div>
179 <table class="footer
"><tr class="footer
"><td class="header-group navigation-bar
"><span class="navigation-group
"><a href="./set-c.html
" class="navigation-link
">Prev</a> <a href="./views.html
" class="navigation-link
">Next</a></span><span class="navigation-group-separator
"> | </span><span class="navigation-group
"><a href="./set-c.html
" class="navigation-link
">Back</a> Along</span><span class="navigation-group-separator
"> | </span><span class="navigation-group
"><a href="./classes.html
" class="navigation-link
">Up</a> <a href="../refmanual.html
" class="navigation-link
">Home</a></span><span class="navigation-group-separator
"> | </span><span class="navigation-group
"><a href="./refmanual_toc.html
" class="navigation-link
">Full TOC</a></span></td>
180 <td><div class="copyright-footer
"><div class="copyright
">Copyright © 2009 Eric Niebler</div>
181 Distributed under the Boost Software License, Version 1.0. (See accompanying
182 file LICENSE_1_0.txt or copy at <a class="reference external
" href="http://www.boost.org/LICENSE_1_0.txt
" target="_top
">http://www.boost.org/LICENSE_1_0.txt</a>)</div></td></tr></table></body>