Espacios de nombres
Variantes
Acciones

std::basic_string::find_last_not_of

De cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
(1)
size_type find_last_not_of(const basic_string& str,
                            size_type pos = npos )const;
(hasta C++11)
size_type find_last_not_of(const basic_string& str,
                            size_type pos = npos )constnoexcept;
(desde C++11)
(hasta C++20)
constexpr size_type find_last_not_of(const basic_string& str,
                                      size_type pos = npos )constnoexcept;
(desde C++20)
(2)
size_type find_last_not_of(const CharT* s,
                            size_type pos, size_type count )const;
(hasta C++20)
constexpr size_type find_last_not_of(const CharT* s,
                                      size_type pos, size_type count )const;
(desde C++20)
(3)
size_type find_last_not_of(const CharT* s, size_type pos = npos )const;
(hasta C++20)
constexpr size_type find_last_not_of(const CharT* s,
                                      size_type pos = npos )const;
(desde C++20)
(4)
size_type find_last_not_of( CharT ch, size_type pos = npos )const;
(hasta C++11)
size_type find_last_not_of( CharT ch, size_type pos = npos )constnoexcept;
(desde C++11)
(hasta C++20)
constexpr size_type find_last_not_of( CharT ch,
                                      size_type pos = npos )constnoexcept;
(desde C++20)
(5)
template<class T >

size_type
    find_last_not_of(const T& t,

                      size_type pos = npos )constnoexcept(/* véase más abajo */);
(desde C++17)
(hasta C++20)
template<class T >

constexpr size_type
    find_last_not_of(const T& t,

                      size_type pos = npos )constnoexcept(/* véase más abajo */);
(desde C++20)

Encuentra el último carácter que no es igual a ninguno de los caracteres en la secuencia de caracteres dada. La búsqueda considera solamente el intervalo [0, pos]. Si el carácter no está presente en el intervalo, se devuelve npos.

1) Encuentra el último carácter que no es igual a ninguno de los caracteres en str.
2) Encuentra el último carácter que no es igual a ninguno de los caracteres en el rango [s, s+count). Este rango puede contener caracteres nulos.
3) Encuentra el último carácter que no es igual a ninguno de los caracteres en la cadena de caracteres a la que apunta s. La longitud de la cadena se determina por el primer carácter nulo usando Traits::length(s).
4) Encuentra el último carácter que no es igual a ch.
5) Implícitamente convierte t a una vista sobre cadena sv como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces encuentra el último carácter que no es igual a ninguno de los caracteres en sv. Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> es true y std::is_convertible_v<const T&, const CharT*> es false.

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

Contenido

[editar]Parámetros

str - La cadena que identifica los caracteres a buscar.
pos - La posición en la cual iniciar la búsqueda.
count - La longitud de la cadena de caracteres que identifica los caracteres a buscar.
s - Puntero a la 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.

[editar]Valor de retorno

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

[editar]Excepciones

5)
Especificación noexcept:   (desde C++11)
noexcept(std::is_nothrow_convertible_v<const T&, std::basic_string_view<charT, traits>>)

[editar]Ejemplo

#include <iostream>#include <string>   void show_pos(conststd::string& str, std::string::size_type found){if(found !=std::string::npos){std::cout<<"["<< found <<"] = \'"<< str[found]<<"\'\n";}else{std::cout<<"no se encuentra""\n";}}   int main(){std::string str {"abc_123"};charconst* skip_set {"0123456789"}; std::string::size_type str_last_pos {std::string::npos};   show_pos(str, str.find_last_not_of(skip_set));// [3] = '_'   str_last_pos =2; show_pos(str, str.find_last_not_of(skip_set, str_last_pos));// [2] = 'c'   str_last_pos =2; show_pos(str, str.find_last_not_of('c', str_last_pos));// [1] = 'b'   constchar arr[]{'3','4','5'}; show_pos(str, str.find_last_not_of(arr));// [5] = '2'   str_last_pos =2; std::string::size_type skip_set_size {4}; show_pos(str, str.find_last_not_of(skip_set, str_last_pos, skip_set_size));// [2] = 'c'   show_pos(str, str.find_last_not_of("abc"));// [6] = '3'   str_last_pos =2; show_pos(str, str.find_last_not_of("abc", str_last_pos));// no se encuentra}

Salida:

[3] = '_' [2] = 'c' [1] = 'b' [5] = '2' [2] = 'c' [6] = '3' no se encuentra

[editar]Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 2064 C++11 Las sobrecargas (3) y (4) eran noexcept Se eliminó.
LWG 2946 C++17 La sobrecarga string_view causa ambigüedad en algunos casos. Se evitó haciéndola una plantilla.
P1148R0 C++11
C++17
noexcept para las sobrecargas (4)/(5) fue accidentalmente eliminado por LWG2064/LWG2946 Se restauró.

[editar]Véase también

Encuentra caracteres en la cadena
(función miembro pública)[editar]
Encuentra la última aparición de una subcadena
(función miembro pública)[editar]
Encuentra la primera aparición de caracteres
(función miembro pública)[editar]
Encuentra la primera ausencia de caracteres
(función miembro pública)[editar]
Encuentra la última aparición de caracteres
(función miembro pública)[editar]
close