Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Click here to view the latest version of this page.
Front Page / Sequences / Classes / string

string

Description

string is a variadic, bidirectional, extensible Integral Sequence Wrapper of characters that supports amortized constant-time insertion and removal of elements at both ends, and linear-time insertion and removal of elements in the middle. The parameters to string are multi-character literals, giving a somewhat readable syntax for compile-time strings. string can also be an argument to the c_str metafunction, which generates a null-terminated character array that facilitates interoperability with runtime string processing routines.

Header

Sequence form Header
Variadic #include <boost/mpl/string.hpp>

Model of

Expression semantics

In the following table, s is an instance of string, pos and last are iterators into s, r is a Forward Sequence of characters, n and x are Integral Constants, and c1,c2,... cn are arbitrary (multi-)characters.

Expression Semantics
string<c1,c2,... cn>
string of characters c1,c2,... cn; see Variadic Sequence.
string<c1,c2,... cn>::type
Identical to string<c1,c2,... cn>; see Variadic Sequence.
begin<s>::type An iterator pointing to the beginning of s; see Bidirectional Sequence.
end<s>::type An iterator pointing to the end of s; see Bidirectional Sequence.
size<s>::type The size of s; see Bidirectional Sequence.
empty<s>::type A boolean Integral Constant c such that c::value == true if and only if the sequence is empty; see Bidirectional Sequence.
front<s>::type The first element in s; see Bidirectional Sequence.
back<s>::type The last element in s; see Bidirectional Sequence.
insert<s,pos,x>::type A new string of following elements: [begin<s>::type, pos), x, [pos, end<s>::type); see Extensible Sequence.
insert_range<s,pos,r>::type A new string of following elements: [begin<s>::type, pos), [begin<r>::type, end<r>::type) [pos, end<s>::type); see Extensible Sequence.
erase<s,pos>::type A new string of following elements: [begin<s>::type, pos), [next<pos>::type, end<s>::type); see Extensible Sequence.
erase<s,pos,last>::type A new string of following elements: [begin<s>::type, pos), [last, end<s>::type); see Extensible Sequence.
clear<s>::type An empty string; see Extensible Sequence.
push_back<s,x>::type A new string of following elements: [begin<s>::type, end<s>::type), x; see Back Extensible Sequence.
pop_back<s>::type A new string of following elements: [begin<s>::type, prior< end<s>::type >::type); see Back Extensible Sequence.
push_front<s,x>::type A new string of following elements: [begin<s>::type, end<s>::type), x; see Front Extensible Sequence.
pop_front<s>::type A new string of following elements: [next< begin<s>::type >::type, end<s>::type); see Front Extensible Sequence.
c_str<s>::value A null-terminated byte string such that c_str<s>::value[n] is equal to the n-th character in s, and c_str<s>::value[size<s>::type::value] is '\0'.

Example

typedef mpl::string<'hell','o wo','rld'> hello;
typedef mpl::push_back<hello, mpl::char_<'!'> >::type hello2;

BOOST_ASSERT(0 == std::strcmp(mpl::c_str<hello2>::value, "hello world!"));

See also

Sequences, Variadic Sequence, Bidirectional Sequence, Extensible Sequence, Integral Sequence Wrapper, char_, c_str