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 desde C++11)
(constexpr desde C++20)
size_type find_first_of ( const CharT * s,
size_type pos, size_type count ) const ;
(2) (constexpr desde C++20)
size_type find_first_of ( const CharT * s, size_type pos = 0 ) const ;
(3) (constexpr desde C++20)
size_type find_first_of ( CharT ch, size_type pos = 0 ) const ;
(4) (noexcept desde C++11)
(constexpr desde C++20)
template < class StringViewLike >

size_type
find_first_of ( const StringViewLike & t,

size_type pos = 0 ) const noexcept ( /* ver más abajo */ ) ;
(5) (desde C++17)
(constexpr desde C++20)

Encuentra el primer carácter igual a uno de los caracteres en la secuencia de caracteres dada. La búsqueda considera solo el rango [ pos , size() ) . Si ninguno de los caracteres en la secuencia de caracteres dada está presente en el rango, npos será retornado.

1) Encuentra el primer carácter igual a uno de los caracteres en str .
2) Encuentra el primer carácter igual a uno de los caracteres en el rango [ s , s + count ) . Este rango puede incluir caracteres nulos.
Si [ s , s + count ) no es un rango válido , el comportamiento es indefinido.
3) Encuentra el primer carácter igual a uno de los caracteres en la cadena de caracteres apuntada por s . La longitud de la cadena se determina por el primer carácter nulo usando Traits :: length ( s ) .
Si [ s , s + Traits :: length ( s ) ) no es un rango válido , el comportamiento es indefinido.
4) Encuentra el primer carácter igual a ch .
5) Convierte implícitamente t a una vista de cadena sv como si fuera mediante std:: basic_string_view < CharT, Traits > sv = t ; , luego encuentra el primer carácter igual a uno de los caracteres en sv .
Esta sobrecarga participa en la resolución de sobrecarga solo si std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
es true y std:: is_convertible_v < const StringViewLike & , const CharT * > es false .

Contenidos

Parámetros

str - cadena que identifica los caracteres a buscar
pos - posición en la que comenzar la búsqueda
count - longitud de la cadena de caracteres que identifica los caracteres a buscar
s - puntero a una cadena de caracteres que identifica los caracteres a buscar
ch - carácter a buscar
t - objeto (convertible a std::basic_string_view ) que identifica los caracteres a buscar

Valor de retorno

Posición del carácter encontrado o npos si no se encuentra dicho carácter.

Excepciones

1,4) No lanza nada.
5)
noexcept especificación:
noexcept ( std:: is_nothrow_convertible_v < const T & , std:: basic_string_view < CharT, Traits >> )

Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).

Notas

Traits :: eq ( ) se utiliza para realizar la comparación.

Ejemplo

#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);
    // sin coincidencia
    assert(sz == std::string::npos);
    // (2)
    sz = "consteval"s.find_first_of("xyzabc", 0, 3);
    // sin coincidencia (× no son objetivos)     ×××
    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";
}

Salida:

All tests passed.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 847 C++98 no existía garantía de seguridad de excepciones se añadió garantía de seguridad fuerte de excepciones
LWG 2064 C++11 las sobrecargas (3,4) eran noexcept eliminadas
LWG 2946 C++17 la sobrecarga (5) causaba ambigüedad en algunos casos evitada al convertirla en plantilla
P1148R0 C++11
C++17
noexcept para las sobrecargas (4,5) fue
eliminado accidentalmente por LWG2064/LWG2946
restaurado

Véase también

encuentra la primera ocurrencia de la subcadena dada
(función miembro pública)
encuentra la última ocurrencia de una subcadena
(función miembro pública)
encuentra la primera ausencia de caracteres
(función miembro pública)
encuentra la última ocurrencia de caracteres
(función miembro pública)
encuentra la última ausencia de caracteres
(función miembro pública)
encuentra la primera ocurrencia de caracteres
(función miembro pública de std::basic_string_view<CharT,Traits> )
devuelve la longitud del segmento inicial máximo que consiste
únicamente en los caracteres encontrados en otra cadena de bytes
(función)