Namespaces
Variants

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

From cppreference.net
std::basic_string
size_type find_first_of ( const basic_string & str, size_type pos = 0 ) const ;
(1) (noexcept seit C++11)
(constexpr seit C++20)
size_type find_first_of ( const CharT * s,
size_type pos, size_type count ) const ;
(2) (constexpr seit C++20)
size_type find_first_of ( const CharT * s, size_type pos = 0 ) const ;
(3) (constexpr seit C++20)
size_type find_first_of ( CharT ch, size_type pos = 0 ) const ;
(4) (noexcept seit C++11)
(constexpr seit C++20)
template < class StringViewLike >

size_type
find_first_of ( const StringViewLike & t,

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

Findet das erste Zeichen, das einem der Zeichen in der gegebenen Zeichenfolge entspricht. Die Suche berücksichtigt nur den Bereich [ pos , size() ) . Wenn keines der Zeichen in der gegebenen Zeichenfolge im Bereich vorhanden ist, wird npos zurückgegeben.

1) Findet das erste Zeichen, das einem der Zeichen in str entspricht.
2) Findet das erste Zeichen, das einem der Zeichen im Bereich [ s , s + count ) entspricht. Dieser Bereich kann Nullzeichen enthalten.
Falls [ s , s + count ) kein gültiger Bereich ist, ist das Verhalten undefiniert.
3) Findet das erste Zeichen, das einem der Zeichen in der Zeichenkette entspricht, auf die s zeigt. Die Länge der Zeichenkette wird durch das erste Nullzeichen mittels Traits :: length ( s ) bestimmt.
Falls [ s , s + Traits :: length ( s ) ) kein gültiger Bereich ist, ist das Verhalten undefiniert.
4) Findet das erste Zeichen gleich ch .
5) Konvertiert implizit t zu einem String-View sv als ob durch std:: basic_string_view < CharT, Traits > sv = t ; , findet dann das erste Zeichen, das einem der Zeichen in sv entspricht.
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.

Inhaltsverzeichnis

Parameter

str - Zeichenkette, die zu suchende Zeichen identifiziert
pos - Position, an der die Suche beginnen soll
count - Länge der Zeichenkette, die zu suchende Zeichen identifiziert
s - Zeiger auf eine Zeichenkette, die zu suchende Zeichen identifiziert
ch - zu suchendes Zeichen
t - Objekt (konvertierbar zu std::basic_string_view ), das zu suchende Zeichen identifiziert

Rückgabewert

Position des gefundenen Zeichens oder npos falls kein solches Zeichen gefunden wurde.

Exceptions

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 Exception ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).

Hinweise

Traits :: eq ( ) wird verwendet, um den Vergleich durchzuführen.

Beispiel

#include <cassert>
#include <iostream>
#include <string>
#include <string_view>
int main()
{
    using namespace std::literals;
    std::string::size_type sz;
    // (1)
    sz = "alignas"s.find_first_of("klmn"s);
    //     └────────────────────────┘
    assert(sz == 1);
    sz = "alignof"s.find_first_of("wxyz"s);
    // keine Übereinstimmung
    assert(sz == std::string::npos);
    // (2)
    sz = "consteval"s.find_first_of("xyzabc", 0, 3);
    // keine Übereinstimmung (× sind keine Ziele)     ×××
    assert(sz == std::string::npos);
    sz = "consteval"s.find_first_of("xyzabc", 0, 6);
    //    └───────────────────────────────┘
    assert(sz == 0);
    // (3)
    sz = "decltype"s.find_first_of("xyzabc");
    //      └────────────────────────────┘
    assert(sz == 2);
    // (4)
    sz = "co_await"s.find_first_of('a');
    //       └──────────────────────┘
    assert(sz == 3);
    // (5)
    sz = "constinit"s.find_first_of("int"sv);
    //      └─────────────────────────┘
    assert(sz == 2);
    std::cout << "All tests passed.\n";
}

Ausgabe:

All tests passed.

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 2064 C++11 Überladungen (3,4) waren noexcept entfernt
LWG 2946 C++17 Überladung (5) verursachte in einigen Fällen Mehrdeutigkeit vermieden durch Template-Implementierung
P1148R0 C++11
C++17
noexcept für Überladungen (4,5) wurden
versehentlich durch LWG2064/LWG2946 entfernt
wiederhergestellt

Siehe auch

findet das erste Vorkommen der angegebenen Teilzeichenkette
(öffentliche Elementfunktion)
findet das letzte Vorkommen einer Teilzeichenkette
(öffentliche Elementfunktion)
findet erste Abwesenheit von Zeichen
(öffentliche Elementfunktion)
findet letztes Vorkommen von Zeichen
(öffentliche Elementfunktion)
findet letzte Abwesenheit von Zeichen
(öffentliche Elementfunktion)
findet erstes Vorkommen von Zeichen
(öffentliche Elementfunktion von std::basic_string_view<CharT,Traits> )
gibt die Länge des maximalen Anfangssegments zurück, das nur
aus Zeichen besteht, die in einer anderen Byte-Zeichenkette gefunden wurden
(Funktion)