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) |
basic_string& insert( size_type index, const basic_string& str,
size_type s_index, size_type count );
|
(5) | (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) |
|
iterator insert( iterator pos, CharT ch );
|
(6) | (bis C++11) |
iterator insert( const_iterator pos, CharT ch );
|
(seit C++11) (constexpr seit C++20) |
|
void insert( iterator pos, size_type count, CharT ch );
|
(7) | (bis C++11) |
iterator insert( const_iterator pos, size_type count, CharT ch );
|
(seit C++11) (constexpr seit C++20) |
|
template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last );
|
(8) | (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,
size_type t_index, size_type count = npos );
|
(11) | (seit C++17) (constexpr seit C++20) |
Fügt Zeichen in die Zeichenkette ein.
count Kopien des Zeichens ch an der Position index ein.s beendete Zeichenkette, auf die index zeigt, an der Position Traits::length(s) ein. Die Länge der Zeichenkette wird mit [s, s + count) Fügt die Zeichen im Bereich index an der Position str Fügt die Zeichenkette index an der Position str.substr(s_index, count) Fügt eine Zeichenkette, erhalten durch index, an der Position ch Fügt das Zeichen pos vor dem Zeichen ein, auf das count Fügt ch Kopien des Zeichens pos vor dem (falls vorhandenen) Element ein, auf das [first, last) Fügt Zeichen aus dem Bereich pos vor dem (falls vorhandenen) Element ein, auf das insert(pos - begin(), basic_string(first, last, get_allocator())) zeigt, als ob durch |
.
|
erfüllt. |
ilist Fügt Elemente aus der Initialisierungsliste pos vor dem (falls vorhandenen) Element ein, auf das t Konvertiert sv implizit in eine String-Ansicht std::basic_string_view<CharT, Traits> sv = t; als ob durch sv und fügt dann die Elemente aus index vor dem (falls vorhandenen) Element ein, auf das insert(index, sv.data(), sv.size()) zeigt, als ob durch 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.t implizit in eine String-Ansicht sv als ob durch std::basic_string_view<CharT, Traits> sv = t; und fügt dann, vor dem (falls vorhandenen) Element, auf das index zeigt, die Zeichen aus der Unteransicht [t_index, t_index + count) von sv ein.
- Wenn die angeforderte Unteransicht über das Ende von
svhinausreicht oder wenncount == npos, ist die resultierende Unteransicht[t_index,sv.size()). - Wenn
t_index > sv.size()oder wennindex > size(), wird std::out_of_range ausgelöst.
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 pos kein gültiger Iterator auf *this ist, ist das Verhalten undefiniert.
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) |