Namespaces
Variants

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

From cppreference.net
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 ( ) + pos , begin ( ) + std:: min ( pos + count, size ( ) ) ) oder [ first , last ) mit den angegebenen Zeichen.

1,2) Diese Zeichen werden ersetzt durch str .
3) Diese Zeichen werden durch einen Teilstring ersetzt [ pos2 , std:: min ( pos2 + count2, str. size ( ) ) ) von str .
4,5) Diese Zeichen werden durch die Zeichen im Bereich [ cstr , cstr + count2 ) ersetzt.
Falls [ cstr , cstr + count2 ) kein gültiger Bereich ist, ist das Verhalten undefiniert.
6,7) Diese Zeichen werden durch die Zeichen im Bereich [ cstr , cstr + Traits :: length ( cstr ) ) ersetzt.
8,9) Diese Zeichen werden durch count2 Kopien von ch ersetzt.
10) Diese Zeichen werden durch die Zeichen im Bereich [ first2 , last2 ) 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 zu einem String-View sv als ob durch std:: basic_string_view < CharT, Traits > sv = t ; , dann werden diese Zeichen ersetzt durch die Zeichen aus sv .
Diese Überladungen nehmen nur dann an der Überladungsauflösung teil, 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 zu einem String-View sv als ob durch std:: basic_string_view < CharT, Traits > sv = t ; , dann werden diese Zeichen ersetzt durch die Zeichen aus dem Sub-View sv. substr ( pos2, count2 ) .
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, 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 [ first , last ) kein gültiger Bereich ist, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Parameter

pos - Anfang der zu ersetzenden Teilzeichenkette
count - Länge der zu ersetzenden Teilzeichenkette
first, last - Bereich der zu ersetzenden Zeichen
str - Zeichenkette für den Ersatz
pos2 - Anfang der Ersatz-Teilzeichenkette
count2 - Anzahl der zu ersetzenden Zeichen
cstr - Zeiger auf die Ersatz-Zeichenkette
ch - Zeichenwert für den Ersatz
first2, last2 - Bereich der Ersatzzeichen
ilist - Initialisierungsliste mit den Ersatzzeichen
t - Objekt (konvertierbar zu std::basic_string_view ) mit den Ersatzzeichen
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.

Rückgabewert

* this .

Ausnahmen

1) Wirft std::out_of_range falls pos > size ( ) .
3) Wirft std::out_of_range wenn pos > size ( ) oder pos2 > str. size ( ) .
4,6,8) Wirft std::out_of_range falls pos > size ( ) .
12,14) Wirft std::out_of_range falls pos > size ( ) .

Falls die Operation dazu führen würde, dass size() die max_size() überschreitet, wird std::length_error geworfen.

Wenn aus irgendeinem Grund eine Exception ausgelöst wird, haben diese Funktionen keine Wirkung ( strong exception safety guarantee ).

Beispiel

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 Exception-Sicherheitsgarantie starke Exception-Sicherheitsgarantie 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 durch Template-Implementierung

Siehe auch

ersetzt einen bestimmten Teilbereich eines Strings mit einem Zeichenbereich
(öffentliche Elementfunktion)
ersetzt Vorkommen eines regulären Ausdrucks mit formatiertem Ersatztext
(Funktionstemplate)
ersetzt alle Werte, die bestimmte Kriterien erfüllen, mit einem anderen Wert
(Funktionstemplate)