Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
basic_string& replace( size_type pos, size_type count,
                       const basic_string& str );
(1) (constexpr seit C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const basic_string& str );
(2) (constexpr seit C++20)
(3)
basic_string& replace( size_type pos, size_type count,

                       const basic_string& str,

                       size_type pos2, size_type count2 );
(bis C++14)
basic_string& replace( size_type pos, size_type count,

                       const basic_string& str,

                       size_type pos2, size_type count2 = npos );
(seit C++14)
(constexpr seit C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr, size_type count2 );
(4) (constexpr seit C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr, size_type count2 );
(5) (constexpr seit C++20)
basic_string& replace( size_type pos, size_type count,
                       const CharT* cstr );
(6) (constexpr seit C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       const CharT* cstr );
(7) (constexpr seit C++20)
basic_string& replace( size_type pos, size_type count,
                       size_type count2, CharT ch );
(8) (constexpr seit C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       size_type count2, CharT ch );
(9) (constexpr seit C++20)
template< class InputIt >

basic_string& replace( const_iterator first, const_iterator last,

                       InputIt first2, InputIt last2 );
(10) (constexpr seit C++20)
basic_string& replace( const_iterator first, const_iterator last,
                       std::initializer_list<CharT> ilist );
(11) (seit C++11)
(constexpr seit C++20)
template< class StringViewLike >

basic_string& replace( size_type pos, size_type count,

                       const StringViewLike& t );
(12) (seit C++17)
(constexpr seit C++20)
template< class StringViewLike >

basic_string& replace( const_iterator first, const_iterator last,

                       const StringViewLike& t );
(13) (seit C++17)
(constexpr seit C++20)
template< class StringViewLike >

basic_string& replace( size_type pos, size_type count,
                       const StringViewLike& t,

                       size_type pos2, size_type count2 = npos );
(14) (seit C++17)
(constexpr seit C++20)

Ersetzt die Zeichen im Bereich [begin() + posbegin() + std::min(pos + count, size())) oder [firstlast) durch gegebene Zeichen.

1,2) Diese Zeichen werden durch str ersetzt.
3) Diese Zeichen werden durch einen Teilstring [pos2std::min(pos2 + count2, str.size())) von str ersetzt.
4,5) Diese Zeichen werden durch die Zeichen im Bereich [cstrcstr + count2) ersetzt.
Wenn [cstrcstr + count2) kein gültiger Bereich ist, ist das Verhalten undefiniert.
6,7) Diese Zeichen werden durch die Zeichen im Bereich [cstrcstr + Traits::length(cstr)) ersetzt.
8,9) Diese Zeichen werden durch count2 Kopien von ch ersetzt.
10) Diese Zeichen werden durch die Zeichen im Bereich [first2last2) ersetzt, als ob durch replace(first, last, basic_string(first2, last2, get_allocator())).
11) Diese Zeichen werden durch die Zeichen in ilist ersetzt.
12,13) Konvertiert implizit t in eine String-Ansicht sv, als ob durch std::basic_string_view<CharT, Traits> sv = t;, dann werden diese Zeichen durch die Zeichen aus sv ersetzt.
Diese Überladungen nehmen an der Überladungsauflösung teil, nur wenn std::is_convertible_v<const StringViewLike&,
                      std::basic_string_view<CharT, Traits>>
true ist und std::is_convertible_v<const StringViewLike&, const CharT*> false ist.
14) Konvertiert implizit t in eine String-Ansicht sv, als ob durch std::basic_string_view<CharT, Traits> sv = t;, dann werden diese Zeichen durch die Zeichen aus der Teilansicht sv.substr(pos2, count2) ersetzt.
Diese Überladung nimmt an der Überladungsauflösung teil, nur wenn std::is_convertible_v<const StringViewLike&,
                      std::basic_string_view<CharT, Traits>>
true ist und std::is_convertible_v<const StringViewLike&, const CharT*> false ist.

Wenn [begin()first) oder [firstlast) kein gültiger Bereich ist, ist das Verhalten undefiniert.

Inhalt

[edit] Parameter

pos - Start des zu ersetzenden Teilstrings
zählt - Länge des zu ersetzenden Teilstrings
first, last - Bereich von Zeichen, der ersetzt werden soll
str - String, der für den Ersatz verwendet werden soll
pos2 - Start des zu ersetzenden Teilstrings
count2 - Anzahl der zu ersetzenden Zeichen
cstr - Zeiger auf den Zeichenstring, der für den Ersatz verwendet werden soll
ch - Zeichenwert, der für den Ersatz verwendet werden soll
first2, last2 - Bereich von Zeichen, der für den Ersatz verwendet werden soll
ilist - Initialisierungsliste mit den zu verwendenden Zeichen für den Ersatz
t - Objekt (konvertierbar zu std::basic_string_view) mit den zu verwendenden Zeichen für den Ersatz
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.

[edit] Rückgabewert

*this.

[edit] Ausnahmen

1) Löst std::out_of_range aus, wenn pos > size().
3) Löst std::out_of_range aus, wenn pos > size() oder pos2 > str.size().
4,6,8) Löst std::out_of_range aus, wenn pos > size().
12,14) Löst std::out_of_range aus, wenn pos > size().

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

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).

[edit] Beispiel

[edit] 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 1323 C++98 die Typen von first und last waren iterator geändert zu const_iterator
LWG 2946 C++17 Überladungen (12,13) verursachten in einigen Fällen Mehrdeutigkeit vermieden, indem sie zu Templates gemacht wurden

[edit] Siehe auch

ersetzt einen angegebenen Teil eines Strings durch einen Zeichenbereich
(öffentliche Memberfunktion) [edit]
ersetzt Vorkommen eines regulären Ausdrucks durch formatierten Ersetzungstext
(Funktionsvorlage) [bearbeiten]
Ersetzt alle Werte, die bestimmte Kriterien erfüllen, durch einen anderen Wert
(Funktionstempelat) [edit]