Namespaces
Variants

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

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

size_type
find_last_of ( const StringViewLike & t,

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

Encuentra el último carácter igual a uno de los caracteres en la secuencia de caracteres dada. El algoritmo de búsqueda exacto no está especificado. La búsqueda considera solo el rango [ 0 , pos ] . Si ninguno de los caracteres en la secuencia de caracteres dada está presente en el rango, npos será retornado.

1) Encuentra el último carácter igual a uno de los caracteres en str .
2) Encuentra el último 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 último 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 último 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 último 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 .

En todos los casos, la igualdad se verifica llamando a Traits::eq .

Contenidos

Parámetros

str - cadena que identifica los caracteres a buscar
pos - posición en la que debe finalizar 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 ).

Ejemplo

#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';
}

Salida:

config

Informes de defectos

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

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 141 C++98 la sobrecarga (1) solo podía retornar npos si pos >= size ( ) el rango de búsqueda es
[ 0 , size ( ) ) en este caso
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 eliminado
LWG 2946 C++17 la sobrecarga (5) causaba ambigüedad en algunos casos evitado al convertirla en plantilla
P1148R0 C++11
C++17
noexcept para las sobrecargas (4,5) fueron
eliminadas 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 ocurrencia de caracteres
(función miembro pública)
encuentra la primera ausencia de caracteres
(función miembro pública)
encuentra la última ausencia de caracteres
(función miembro pública)
encuentra la última ocurrencia de caracteres
(función miembro pública de std::basic_string_view<CharT,Traits> )