Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
size_type find_last_of( const basic_string& str,
                        size_type pos = npos ) const;
(1) (noexcept seit C++11)
(constexpr seit C++20)
size_type find_last_of( const CharT* s,
                        size_type pos, size_type count ) const;
(2) (constexpr seit C++20)
size_type find_last_of( const CharT* s, size_type pos = npos ) const;
(3) (constexpr seit C++20)
size_type find_last_of( CharT ch, size_type pos = npos ) const;
(4) (noexcept seit C++11)
(constexpr seit C++20)
template< class StringViewLike >

size_type
    find_last_of( const StringViewLike& t,

                  size_type pos = npos ) const noexcept(/* siehe unten */);
(5) (seit C++17)
(constexpr seit C++20)

Findet das letzte Zeichen, das mit einem der Zeichen in der gegebenen Zeichensequenz übereinstimmt. Der genaue Suchalgorithmus ist nicht spezifiziert. Die Suche berücksichtigt nur den Bereich [0pos]. Wenn keines der Zeichen in der gegebenen Zeichensequenz im Bereich vorhanden ist, wird npos zurückgegeben.

1) Findet das letzte Zeichen, das mit einem der Zeichen in str übereinstimmt.
2) Findet das letzte Zeichen, das mit einem der Zeichen im Bereich [ss + count) übereinstimmt. Dieser Bereich kann Nullzeichen enthalten.
Wenn [ss + count) kein gültiger Bereich ist, ist das Verhalten undefiniert.
3) Findet das letzte Zeichen, das mit einem der Zeichen in der von s zeigenden Zeichenkette übereinstimmt. Die Länge der Zeichenkette wird durch das erste Nullzeichen mittels Traits::length(s) bestimmt.
Wenn [ss + Traits::length(s)) kein gültiger Bereich ist, ist das Verhalten undefiniert.
4) Findet das letzte Zeichen, das mit ch übereinstimmt.
5) Konvertiert t implizit in eine Zeichenkettenansicht sv, als ob durch std::basic_string_view<CharT, Traits> sv = t;, und findet dann das letzte Zeichen, das mit einem der Zeichen in sv übereinstimmt.
Diese Überladung nimmt nur an der Auflösung von Überladungen 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.

In allen Fällen wird die Gleichheit durch Aufruf von Traits::eq geprüft.

Inhalt

[edit] Parameter

str - String, der die zu durchsuchenden Zeichen identifiziert
pos - Position, an der die Suche beendet werden soll
zählt - Länge der Zeichenkette, die die zu durchsuchenden Zeichen identifiziert
s - Zeiger auf eine Zeichenkette, die die zu durchsuchenden Zeichen identifiziert
ch - Zu durchsuchendes Zeichen
t - Objekt (konvertierbar zu std::basic_string_view), das die zu durchsuchenden Zeichen identifiziert

[edit] Rückgabewert

Position des gefundenen Zeichens oder npos, wenn kein solches Zeichen gefunden wird.

[edit] Ausnahmen

1,4) Wirft nichts.
5)
noexcept-Spezifikation:  
noexcept(std::is_nothrow_convertible_v<const T&, std::basic_string_view<CharT, Traits>>)

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie).

[edit] Beispiel

#include <iostream>
#include <string>
 
int main()
{
    const std::string path = "/root/config";
    auto const pos = path.find_last_of('/');
    const auto leaf = path.substr(pos + 1);
 
    std::cout << leaf << '\n';
}

Ausgabe

config

[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 141 C++98 Überladung (1) konnte nur dann npos zurückgeben, wenn pos >= size() der Suchbereich ist
[0size()) in diesem Fall
LWG 847 C++98 Es gab keine Ausnahmesicherheitsgarantie starke Ausnahmesicherheitsgarantie hinzugefügt
LWG 2064 C++11 Überladungen (3,4) waren noexcept entfernt
LWG 2946 C++17 Überladung (5) verursachte Mehrdeutigkeiten in einigen Fällen vermieden durch die Erstellung als Template
P1148R0 C++11
C++17
noexcept für Überladungen (4,5) waren
versehentlich durch LWG2064/LWG2946 fallen gelassen
wiederhergestellt

[edit] Siehe auch

sucht das erste Vorkommen der gegebenen Teilzeichenkette
(public member function) [edit]
sucht das letzte Vorkommen einer Teilzeichenkette
(public member function) [edit]
findet das erste Vorkommen von Zeichen
(public member function) [edit]
findet das erste Fehlen von Zeichen
(public member function) [edit]
findet das letzte Fehlen von Zeichen
(public member function) [edit]
findet das letzte Vorkommen von Zeichen
(public member function of std::basic_string_view<CharT,Traits>) [edit]