The
class template
basic_string
describes objects that can store a sequence consisting of a varying number of
arbitrary char-like objects with the first element of the sequence at position zero.
Such a sequence is also called a “string” if the type of the
char-like objects that it holds
is clear from context.
In the rest of [basic.string],
the type of the char-like objects held in a basic_string object
is designated by charT.
In all cases,
[data(), data()+ size()] is a valid range,
data()+ size() points at an object with value charT()
(a “null terminator”),
and size()<= capacity() is true.