std::basic_string<CharT,Traits,Allocator>:: rfind
|
size_type rfind
(
const
basic_string
&
str, size_type pos
=
npos
)
const
;
|
(1) |
(noexcept desde C++11)
(constexpr desde C++20) |
|
size_type rfind
(
const
CharT
*
s, size_type pos, size_type count
)
const
;
|
(2) | (constexpr desde C++20) |
|
size_type rfind
(
const
CharT
*
s, size_type pos
=
npos
)
const
;
|
(3) | (constexpr desde C++20) |
|
size_type rfind
(
CharT ch, size_type pos
=
npos
)
const
;
|
(4) |
(noexcept desde C++11)
(constexpr desde C++20) |
|
template
<
class
StringViewLike
>
size_type rfind
(
const
StringViewLike
&
t,
|
(5) |
(desde C++17)
(constexpr desde C++20) |
Encuentra la última subcadena que es igual a la secuencia de caracteres dada. La búsqueda comienza en pos y procede de derecha a izquierda (por lo tanto, la subcadena encontrada, si existe, no puede comenzar en una posición posterior a pos ). Si se pasa npos o cualquier valor no menor que size() - 1 como pos , se buscará en toda la cadena.
[
s
,
s
+
count
)
. Este rango puede incluir caracteres nulos.
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 en la que buscar |
| pos | - | posición en la que comenzar la búsqueda |
| count | - | longitud de la subcadena a buscar |
| s | - | puntero a una cadena de caracteres en la que buscar |
| ch | - | carácter a buscar |
| t | - | objeto (convertible a std::basic_string_view ) a buscar |
Valor de retorno
Posición del primer carácter de la subcadena encontrada o npos si no se encuentra dicha subcadena. Nótese que este es un desplazamiento desde el inicio de la cadena, no desde el final.
Si se busca una cadena vacía (es decir,
str.
size
(
)
,
count
, o
Traits
::
length
(
s
)
es cero), la cadena vacía se encuentra inmediatamente y
rfind
devuelve:
- pos , si pos < size ( ) ;
- size ( ) en caso contrario, incluyendo el caso donde pos == npos .
De lo contrario, si size() es cero, npos siempre se devuelve.
Excepciones
Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).
Ejemplo
#include <iomanip> #include <iostream> #include <string> void print(std::string::size_type n, std::string::size_type len, std::string const &s) { if (n == std::string::npos) std::cout << "not found\n"; else std::cout << "found: " << std::quoted(s.substr(n, len)) << " at " << n << '\n'; } int main() { std::string::size_type n; std::string const s = "This is a string"; // búsqueda hacia atrás desde el final de la cadena n = s.rfind("is"); print(n, 2, s); // búsqueda hacia atrás desde la posición 4 n = s.rfind("is", 4); print(n, 2, s); // encontrar un solo carácter n = s.rfind('s'); print(n, 1, s); // encontrar un solo carácter n = s.rfind('q'); print(n, 1, s); // encontrar el prefijo (ver también s.starts_with("This")) n = s.rfind("This", 0); print(n, 4, s); }
Salida:
found: "is" at 5 found: "is" at 2 found: "s" at 10 not found found: "This" at 0
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 primera ocurrencia de caracteres
(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 última ocurrencia de una subcadena
(función miembro pública de
std::basic_string_view<CharT,Traits>
)
|