Namespaces
Variants

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

From cppreference.net
std::basic_string
void swap ( basic_string & other ) ;
(bis C++17)
void swap ( basic_string & other ) noexcept ( /* siehe unten */ ) ;
(seit C++17)
(constexpr seit C++20)

Tauscht den Inhalt des Strings mit dem von other aus. Alle Iteratoren und Referenzen können ungültig werden.

Falls std:: allocator_traits < allocator_type > :: propagate_on_container_swap :: value true ist, werden die Allokatoren durch einen unqualifizierten Aufruf der nicht-Member-Funktion swap ausgetauscht. Andernfalls werden sie nicht getauscht (und falls get_allocator ( ) ! = other. get_allocator ( ) , ist das Verhalten undefiniert).

(seit C++11)

Inhaltsverzeichnis

Parameter

other - Zeichenkette, mit der die Inhalte ausgetauscht werden sollen

Komplexität

Konstante.

Exceptions

Es wird keine Ausnahme ausgelöst.

(until C++11)

Es wird keine Ausnahme ausgelöst, es sei denn, das Verhalten ist undefiniert.

Falls aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).

(since C++11)


noexcept Spezifikation:
noexcept ( std:: allocator_traits < Allocator > :: propagate_on_container_swap :: value ||
std:: allocator_traits < Allocator > :: is_always_equal :: value )
(seit C++17)

Beispiel

#include <iostream>
#include <string>
int main() 
{
    std::string a = "AAA";
    std::string b = "BBBB";
    std::cout << "Before swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << "\n\n";
    a.swap(b);
    std::cout << "After swap:\n"
                 "a = " << a << "\n"
                 "b = " << b << '\n';
}

Ausgabe:

Before swap:
a = AAA
b = BBBB
After swap:
a = BBBB
b = AAA

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 403 C++98 swap() könnte eine Exception werfen keine Exception wird geworfen
LWG 535 C++98 Das Vertauschen von Strings bewahrte die Zeichenreihenfolge nicht Reihenfolgen werden ebenfalls bewahrt
LWG 2151
( P1148R0 )
C++11 keine Exception wurde im Fall
ungleicher nicht-propagierender Allokatoren geworfen
das Verhalten ist
in diesem Fall undefiniert

Siehe auch

tauscht die Werte zweier Objekte
(Funktions-Template)
tauscht zwei Bereiche von Elementen
(Funktions-Template)
tauscht die Inhalte
(öffentliche Mitgliedsfunktion von std::basic_string_view<CharT,Traits> )