std::basic_string<CharT,Traits,Allocator>::find_first_of
size_type find_first_of( const basic_string& str, size_type pos = 0 ) const;
|
(1) | (noexcept depuis C++11) (constexpr depuis C++20) |
size_type find_first_of( const CharT* s,
size_type pos, size_type count ) const;
|
(2) | (constexpr depuis C++20) |
size_type find_first_of( const CharT* s, size_type pos = 0 ) const;
|
(3) | (constexpr depuis C++20) |
size_type find_first_of( CharT ch, size_type pos = 0 ) const;
|
(4) | (noexcept depuis C++11) (constexpr depuis C++20) |
template< class StringViewLike >
size_type
find_first_of( const StringViewLike& t,
size_type pos = 0 ) const noexcept(/* see below */);
|
(5) | (depuis C++17) (constexpr depuis C++20) |
Trouve le premier caractère égal à l'un des caractères de la séquence de caractères donnée. La recherche ne considère que la plage [pos, size()). Si aucun des caractères de la séquence de caractères donnée n'est présent dans la plage, npos est retourné.
str.[s, s + count). Cette plage peut inclure des caractères nuls.[s, s + count) n'est pas une plage valide, le comportement est indéfini.s. La longueur de la chaîne est déterminée par le premier caractère nul en utilisant Traits::length(s).[s, s + Traits::length(s)) n'est pas une plage valide, le comportement est indéfini.ch.t en une vue de chaîne sv comme par std::basic_string_view<CharT, Traits> sv = t;, puis trouve le premier caractère égal à l'un des caractères dans sv.std::is_convertible_v<const StringViewLike&,std::basic_string_view<CharT, Traits>> est true et std::is_convertible_v<const StringViewLike&, const CharT*> est false.Paramètres
| str | - | chaîne identifiant les caractères à rechercher |
| pos | - | position à laquelle commencer la recherche |
| count | - | longueur de la chaîne de caractères identifiant les caractères à rechercher |
| s | - | pointeur vers une chaîne de caractères identifiant les caractères à rechercher |
| ch | - | caractère à rechercher |
| t | - | objet (convertible en std::basic_string_view ) identifiant les caractères à rechercher |
Valeur de retour
Position du caractère trouvé ou npos si aucun caractère n'est trouvé.
Exceptions
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).
Notes
Traits :: eq ( ) est utilisé pour effectuer la comparaison.
Exemple
#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); // aucune correspondance assert(sz == std::string::npos); // (2) sz = "consteval"s.find_first_of("xyzabc", 0, 3); // aucune correspondance (× ne sont pas cibles) ××× 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"; }
Sortie :
All tests passed.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 847 | C++98 | il n'y avait aucune garantie de sécurité des exceptions | garantie de sécurité forte des exceptions ajoutée |
| LWG 2064 | C++11 | les surcharges (3,4) étaient noexcept | supprimé |
| LWG 2946 | C++17 | la surcharge (5) causait une ambiguïté dans certains cas | évité en la rendant template |
| P1148R0 |
C++11
C++17 |
noexcept pour les surcharges
(4,5)
a été
accidentellement supprimé par LWG2064/LWG2946 |
restauré |
Voir aussi
|
trouve la première occurrence de la sous-chaîne donnée
(fonction membre publique) |
|
|
trouve la dernière occurrence d'une sous-chaîne
(fonction membre publique) |
|
|
trouve la première absence de caractères
(fonction membre publique) |
|
|
trouve la dernière occurrence de caractères
(fonction membre publique) |
|
|
trouve la dernière absence de caractères
(fonction membre publique) |
|
|
trouve la première occurrence de caractères
(fonction membre publique de
std::basic_string_view<CharT,Traits>
)
|
|
|
retourne la longueur du segment initial maximum qui consiste
uniquement en les caractères trouvés dans une autre chaîne d'octets (fonction) |