Namensräume
Varianten
Aktionen

std::basic_string<CharT,Traits,Allocator>::append

Von cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
basic_string& append( size_type count, CharT ch );
(1) (constexpr seit C++20)
basic_string& append( const CharT* s, size_type count );
(2) (constexpr seit C++20)
basic_string& append( const CharT* s );
(3) (constexpr seit C++20)
template< class SV >
basic_string& append( const SV& t );
(4) (seit C++17)
(constexpr seit C++20)
template< class SV >

basic_string& append( const SV& t, size_type pos,

                      size_type count = npos );
(5) (seit C++17)
(constexpr seit C++20)
basic_string& append( const basic_string& str );
(6) (constexpr seit C++20)
(7)
basic_string& append( const basic_string& str,
                      size_type pos, size_type count );
(bis C++14)
basic_string& append( const basic_string& str,
                      size_type pos, size_type count = npos );
(seit C++14)
(constexpr seit C++20)
template< class InputIt >
basic_string& append( InputIt first, InputIt last );
(8) (constexpr seit C++20)
basic_string& append( std::initializer_list<CharT> ilist );
(9) (seit C++11)
(constexpr seit C++20)

Hängt zusätzliche Zeichen an den String an.

1) Hängt count Kopien des Zeichens ch an.
2) Hängt Zeichen im Bereich [ss + count) an.
Wenn [ss + count) kein gültiger Bereich ist, ist das Verhalten undefiniert.
3) Entspricht return append(s, Traits::length(s));.
4,5) Hängt Zeichen in einer String-Ansicht sv an, die aus t konstruiert wurde.
  • Wenn nur t angegeben ist, werden alle Zeichen in sv angehängt.
  • Wenn pos ebenfalls angegeben ist
    • Wenn count gleich npos ist, werden alle Zeichen in sv ab pos angehängt.
    • Andernfalls werden die std::min(count, sv.size() - pos) Zeichen in sv ab pos angehängt.
Diese Überladungen nehmen an der Auflösungsauflösung teil, nur wenn alle folgenden Bedingungen erfüllt sind
4) Entspricht std::basic_string_view<CharT, Traits> sv = t;
return append(sv.data(), sv.size());
.
5) Entspricht std::basic_string_view<CharT, Traits> sv = t;
return append(sv.substr(pos, count));
.
6,7) Hängt Zeichen aus einem anderen String str an.
  • Wenn nur str angegeben ist, werden alle Zeichen darin angehängt.
  • Wenn pos ebenfalls angegeben ist
    • Wenn count gleich npos ist, werden alle Zeichen in str ab pos angehängt.
    • Andernfalls werden die std::min(count, str.size() - pos) Zeichen in str ab pos angehängt.
6) Entspricht return append(str.data(), str.size());.
7) Entspricht return append(std::basic_string_view<CharT, Traits>
                  (str).substr(pos, count));
.
(seit C++20)
8) Entspricht return append(basic_string(first, last, get_allocator()));.

Diese Überladung hat denselben Effekt wie Überladung (1), wenn InputIt ein ganzzahliger Typ ist.

(bis C++11)

Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn `InputIt` die Anforderungen eines LegacyInputIterator erfüllt.

(seit C++11)
9) Entspricht return append(ilist.begin(), ilist.size());.

Inhalt

[bearbeiten] Parameter

zählt - Anzahl der anzuhängenden Zeichen
ch - anzuhängender Zeichenwert
s - Zeiger auf den anzuhängenden Zeichenstring
t - Objekt, das in std::basic_string_view konvertierbar ist, mit den anzuhängenden Zeichen
pos - Der Index des ersten anzuhängenden Zeichens
str - anzuhängender String
first, last - Bereich von anzuhängenden Zeichen
ilist - Initialisierungsliste mit den anzuhängenden Zeichen

[bearbeiten] Rückgabewert

*this

[bearbeiten] Komplexität

Es gibt keine standardmäßigen Komplexitätsgarantien, typische Implementierungen verhalten sich ähnlich wie std::vector::insert().

[bearbeiten] Ausnahmen

Wenn die Operation dazu führen würde, dass size() max_size() überschreitet, wird std::length_error ausgelöst.

5) Wenn pos > sv.size() true ist, wird std::out_of_range ausgelöst.
7) Wenn pos > str.size() true ist, wird std::out_of_range ausgelöst.

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie).

[bearbeiten] Beispiel

#include <cassert>
#include <string>
 
int main()
{
    std::string str = "std::string";
    const char* cptr = "C-string";
    const char carr[] = "range";
 
    std::string result;
 
    // 1) Append a char 3 times.
    // Note: This is the only overload accepting “CharT”s.
    result.append(3, '*');
    assert(result == "***");
 
    // 2) Append a fixed-length C-string
    result.append(cptr, 5);
    assert(result == "***C-str");
 
    // 3) Append a null-terminated C-string
    // Note: Because “append” returns *this, we can chain calls together.
    result.append(1, ' ').append(cptr);
    assert(result == "***C-str C-string");
 
    // 6) Append a whole string
    result.append(1, ' ').append(str);
    assert(result == "***C-str C-string std::string");
 
    // 7) Append part of a string
    result.append(str, 3, 2);
    assert(result == "***C-str C-string std::string::");
 
    // 8) Append range
    result.append(&carr[2], &carr[3]);
    assert(result == "***C-str C-string std::string::n");
 
    // 9) Append initializer list
    result.append({'p', 'o', 's'});
    assert(result == "***C-str C-string std::string::npos");
}

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 847 C++98 Es gab keine Ausnahmesicherheitsgarantie starke Ausnahmesicherheitsgarantie hinzugefügt
LWG 2250 C++98 das Verhalten von Überladung (7) war
undefiniert, wenn pos > str.size() true ist
wirft in diesem Fall immer eine Ausnahme
LWG 2788 C++98 Überladung (8) verwendete einen standardkonstruierten
Allocator zum Konstruieren des temporären Strings
holt den Allocator
von get_allocator()
LWG 2946 C++17 Überladung (4) verursacht in einigen Fällen Mehrdeutigkeit vermieden durch die Erstellung als Template

[bearbeiten] Siehe auch

hängt einen Zeichenbereich am Ende an
(public member function) [bearbeiten]
hängt Zeichen am Ende an
(public member function) [edit]
verbindet zwei Strings
(Funktion) [bearbeiten]
verbindet eine bestimmte Anzahl von Zeichen von zwei Strings
(Funktion) [bearbeiten]
hängt eine Kopie einer breiten Zeichenkette an eine andere an
(Funktion) [bearbeiten]
hängt eine bestimmte Anzahl breiter Zeichen von einer breiten Zeichenkette an eine andere an
(Funktion) [bearbeiten]