template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
basic_string<charT, traits, Allocator>(lhs).append(rhs). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(basic_string<charT, traits, Allocator>&& lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
std::move(lhs.append(rhs)). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs,
basic_string<charT, traits, Allocator>&& rhs);
Returns:
std::move(rhs.insert(0, lhs)). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(basic_string<charT, traits, Allocator>&& lhs,
basic_string<charT, traits, Allocator>&& rhs);
Returns:
std::move(lhs.append(rhs)). [
Note: Or equivalently,
std::move(rhs.insert(0, lhs)). —
end note ]
template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
basic_string<charT, traits, Allocator>(lhs) + rhs. Remarks:
Uses
traits::length(). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const charT* lhs,
basic_string<charT, traits, Allocator>&& rhs);
Returns:
std::move(rhs.insert(0, lhs)). Remarks:
Uses
traits::length(). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(charT lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
basic_string<charT, traits, Allocator>(1, lhs) + rhs. template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(charT lhs,
basic_string<charT, traits, Allocator>&& rhs);
Returns:
std::move(rhs.insert(0, 1, lhs)). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Returns:
lhs + basic_string<charT, traits, Allocator>(rhs). Remarks:
Uses
traits::length(). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(basic_string<charT, traits, Allocator>&& lhs,
const charT* rhs);
Returns:
std::move(lhs.append(rhs)). Remarks:
Uses
traits::length(). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(const basic_string<charT, traits, Allocator>& lhs,
charT rhs);
Returns:
lhs + basic_string<charT, traits, Allocator>(1, rhs). template<class charT, class traits, class Allocator>
basic_string<charT, traits, Allocator>
operator+(basic_string<charT, traits, Allocator>&& lhs,
charT rhs);
Returns:
std::move(lhs.append(1, rhs)). template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
Returns:
lhs.compare(rhs) == 0. template<class charT, class traits, class Allocator>
bool operator==(const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
template<class charT, class traits, class Allocator>
bool operator==(const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Requires: rhs points to an array of at least
traits::length(rhs) + 1
elements of
charT. Returns:
lhs.compare(rhs) == 0. template<class charT, class traits, class Allocator>
bool operator!=(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
template<class charT, class traits, class Allocator>
bool operator!=(const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
template<class charT, class traits, class Allocator>
bool operator!=(const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Requires: rhs points to an array of at least
traits::length(rhs) + 1
elements of
charT. Returns:
lhs.compare(rhs) != 0. template<class charT, class traits, class Allocator>
bool operator< (const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
Returns:
lhs.compare(rhs) < 0. template<class charT, class traits, class Allocator>
bool operator< (const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
rhs.compare(lhs) > 0. template<class charT, class traits, class Allocator>
bool operator< (const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Returns:
lhs.compare(rhs) < 0. template<class charT, class traits, class Allocator>
bool operator> (const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
Returns:
lhs.compare(rhs) > 0. template<class charT, class traits, class Allocator>
bool operator> (const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
rhs.compare(lhs) < 0. template<class charT, class traits, class Allocator>
bool operator> (const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Returns:
lhs.compare(rhs) > 0. template<class charT, class traits, class Allocator>
bool operator<=(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
Returns:
lhs.compare(rhs) <= 0. template<class charT, class traits, class Allocator>
bool operator<=(const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
rhs.compare(lhs) >= 0. template<class charT, class traits, class Allocator>
bool operator<=(const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Returns:
lhs.compare(rhs) <= 0. template<class charT, class traits, class Allocator>
bool operator>=(const basic_string<charT, traits, Allocator>& lhs,
const basic_string<charT, traits, Allocator>& rhs) noexcept;
Returns:
lhs.compare(rhs) >= 0. template<class charT, class traits, class Allocator>
bool operator>=(const charT* lhs,
const basic_string<charT, traits, Allocator>& rhs);
Returns:
rhs.compare(lhs) <= 0. template<class charT, class traits, class Allocator>
bool operator>=(const basic_string<charT, traits, Allocator>& lhs,
const charT* rhs);
Returns:
lhs.compare(rhs) >= 0. template<class charT, class traits, class Allocator>
void swap(basic_string<charT, traits, Allocator>& lhs,
basic_string<charT, traits, Allocator>& rhs)
noexcept(noexcept(lhs.swap(rhs)));
Effects:
Equivalent to: lhs.swap(rhs);
template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
operator>>(basic_istream<charT, traits>& is,
basic_string<charT, traits, Allocator>& str);
After constructing a
sentry
object, if the sentry converts to
true, calls
str.erase()
and then extracts characters from
is and appends them
to
str as if by calling
str.append(1, c). If
is.width()
is greater than zero, the maximum
number
n of characters appended is
is.width();
otherwise
n is
str.max_size(). Characters are extracted and appended until any of the following
occurs:
After the last character (if any) is extracted,
is.width(0)
is called and the
sentry
object is destroyed
.If the function extracts no characters, it calls
is.setstate(ios::failbit),
which may throw
ios_base::failure (
[iostate.flags])
.template<class charT, class traits, class Allocator>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os,
const basic_string<charT, traits, Allocator>& str);
Effects:
Equivalent to: return os << basic_string_view<charT, traits>(str);
template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>& is,
basic_string<charT, traits, Allocator>& str,
charT delim);
template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>&& is,
basic_string<charT, traits, Allocator>& str,
charT delim);
Effects:
Behaves as an unformatted input function (
[istream.unformatted]),
except that it does not affect the value returned by subsequent calls to
basic_istream<>::gcount(). After constructing a
sentry
object, if the sentry converts to true, calls
str.erase()
and then extracts characters from is and appends them
to str as if by calling
str.append(1, c)
until any of the following occurs:
end-of-file occurs on the input sequence
(in which case, the
getline
function calls
is.setstate(ios_base::eofbit))
.traits::eq(c, delim)
for the next available input character
c
(in which case,
c
is extracted but not appended) (
[iostate.flags])
str.max_size()
characters are stored
(in which case,
the function calls
is.setstate(ios_base::failbit)) (
[iostate.flags])
The conditions are tested in the order shown
. In any case,
after the last character is extracted, the
sentry
object is destroyed
.If the function extracts no characters, it calls
is.setstate(ios_base::failbit)
which may throw
ios_base::failure (
[iostate.flags])
.template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>& is,
basic_string<charT, traits, Allocator>& str);
template<class charT, class traits, class Allocator>
basic_istream<charT, traits>&
getline(basic_istream<charT, traits>&& is,
basic_string<charT, traits, Allocator>& str);
Returns:
getline(is, str, is.widen('\n')).