std::basic_string<CharT,Traits,Allocator>:: insert
|
basic_string
&
insert
(
size_type index, size_type count, CharT ch
)
;
|
(1) | (constexpr seit C++20) |
|
basic_string
&
insert
(
size_type index,
const
CharT
*
s
)
;
|
(2) | (constexpr seit C++20) |
|
basic_string
&
insert
(
size_type index,
const
CharT
*
s, size_type count
)
;
|
(3) | (constexpr seit C++20) |
|
basic_string
&
insert
(
size_type index,
const
basic_string
&
str
)
;
|
(4) | (constexpr seit C++20) |
| (5) | ||
|
basic_string
&
insert
(
size_type index,
const
basic_string
&
str,
size_type s_index, size_type count ) ; |
(bis C++14) | |
|
basic_string
&
insert
(
size_type index,
const
basic_string
&
str,
size_type s_index, size_type count = npos ) ; |
(seit C++14)
(constexpr seit C++20) |
|
| (6) | ||
|
iterator insert
(
iterator pos, CharT ch
)
;
|
(bis C++11) | |
|
iterator insert
(
const_iterator pos, CharT ch
)
;
|
(seit C++11)
(constexpr seit C++20) |
|
| (7) | ||
|
void
insert
(
iterator pos, size_type count, CharT ch
)
;
|
(bis C++11) | |
|
iterator insert
(
const_iterator pos, size_type count, CharT ch
)
;
|
(seit C++11)
(constexpr seit C++20) |
|
| (8) | ||
|
template
<
class
InputIt
>
void insert ( iterator pos, InputIt first, InputIt last ) ; |
(bis C++11) | |
|
template
<
class
InputIt
>
iterator insert ( const_iterator pos, InputIt first, InputIt last ) ; |
(seit C++11)
(constexpr seit C++20) |
|
|
iterator insert
(
const_iterator pos,
std::
initializer_list
<
CharT
>
ilist
)
;
|
(9) |
(seit C++11)
(constexpr seit C++20) |
|
template
<
class
StringViewLike
>
basic_string & insert ( size_type index, const StringViewLike & t ) ; |
(10) |
(seit C++17)
(constexpr seit C++20) |
|
template
<
class
StringViewLike
>
basic_string
&
insert
(
size_type index,
const
StringViewLike
&
t,
|
(11) |
(seit C++17)
(constexpr seit C++20) |
Fügt Zeichen in die Zeichenkette ein.
[
s
,
s
+
count
)
an der Position
index
ein. Der Bereich kann Nullzeichen enthalten.
[
first
,
last
)
vor dem Element (falls vorhanden) ein, auf das
pos
zeigt, wie durch
insert
(
pos
-
begin
(
)
, basic_string
(
first, last, get_allocator
(
)
)
)
.
|
Diese Überladung nimmt nicht an der Überladungsauflösung teil, wenn
|
(seit C++11) |
std:: basic_string_view < CharT, Traits >> true ist und std:: is_convertible_v < const StringViewLike & , const CharT * > false ist.
[
t_index
,
t_index
+
count
)
von
sv
ein.
-
Wenn der angeforderte Subview über das Ende von
sv
hinausreicht, oder wenn
count
==
npos
, ist der resultierende Subview
[t_index,sv. size ( )). - Wenn t_index > sv. size ( ) , oder wenn index > size ( ) , wird std::out_of_range geworfen.
std:: basic_string_view < CharT, Traits >> true ist und std:: is_convertible_v < const StringViewLike & , const CharT * > false ist.
Wenn pos kein gültiger Iterator für * this ist, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| index | - | Position, an der der Inhalt eingefügt wird |
| pos | - | Iterator, vor dem die Zeichen eingefügt werden |
| ch | - | Einzufügendes Zeichen |
| count | - | Anzahl der einzufügenden Zeichen |
| s | - | Zeiger auf die einzufügende Zeichenkette |
| str | - | Einzufügende Zeichenkette |
| first, last | - | Bereich, der die einzufügenden Zeichen definiert |
| s_index | - | Position des ersten Zeichens in str zum Einfügen |
| ilist | - | std::initializer_list zum Einfügen der Zeichen daraus |
| t | - | Objekt (konvertierbar zu std::basic_string_view ) zum Einfügen der Zeichen daraus |
| t_index | - | Position des ersten Zeichens in t zum Einfügen |
| Typanforderungen | ||
-
InputIt
muss die Anforderungen von
LegacyInputIterator
erfüllen.
|
||
Rückgabewert
Ausnahmen
In allen Fällen wird std::length_error ausgelöst, falls size ( ) + ins_count > max_size ( ) wobei ins_count die Anzahl der einzufügenden Zeichen darstellt.
|
In allen Fällen, wenn std:: allocator_traits < Allocator > :: allocate eine Exception wirft, wird diese erneut geworfen. |
(seit C++20) |
Wenn aus irgendeinem Grund eine Exception ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).
Beispiel
#include <cassert> #include <iterator> #include <string> using namespace std::string_literals; int main() { std::string s = "xmplr"; // insert(size_type index, size_type count, char ch) s.insert(0, 1, 'E'); assert("Exmplr" == s); // insert(size_type index, const char* s) s.insert(2, "e"); assert("Exemplr" == s); // insert(size_type index, string const& str) s.insert(6, "a"s); assert("Exemplar" == s); // insert(size_type index, string const& str, // size_type s_index, size_type count) s.insert(8, " is an example string."s, 0, 14); assert("Exemplar is an example" == s); // insert(const_iterator pos, char ch) s.insert(s.cbegin() + s.find_first_of('n') + 1, ':'); assert("Exemplar is an: example" == s); // insert(const_iterator pos, size_type count, char ch) s.insert(s.cbegin() + s.find_first_of(':') + 1, 2, '='); assert("Exemplar is an:== example" == s); // insert(const_iterator pos, InputIt first, InputIt last) { std::string seq = " string"; s.insert(s.begin() + s.find_last_of('e') + 1, std::begin(seq), std::end(seq)); assert("Exemplar is an:== example string" == s); } // insert(const_iterator pos, std::initializer_list<char>) s.insert(s.cbegin() + s.find_first_of('g') + 1, {'.'}); assert("Exemplar is an:== example string." == s); }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 7 | C++98 | Überladung (8) verwies auf eine nicht existierende Überladung | verweist korrekt auf Überladung (4) |
| LWG 847 | C++98 | es gab keine Exception-Sicherheitsgarantie | starke Exception-Sicherheitsgarantie hinzugefügt |
| LWG 2946 | C++17 | Überladung (10) verursachte in einigen Fällen Mehrdeutigkeit | vermieden durch Template-Implementierung |
Siehe auch
|
(C++23)
|
fügt eine Reihe von Zeichen ein
(öffentliche Elementfunktion) |
|
hängt Zeichen am Ende an
(öffentliche Elementfunktion) |
|
|
hängt ein Zeichen am Ende an
(öffentliche Elementfunktion) |