std::basic_string::find - cppreference.com
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
| (1) | ||
|
|
(hasta C++11) | |
|
|
(desde C++11) (hasta C++20) |
|
|
|
(desde C++20) | |
| (2) | ||
|
|
(hasta C++20) | |
|
|
(desde C++20) | |
| (3) | ||
|
|
(hasta C++20) | |
|
|
(desde C++20) | |
| (4) | ||
|
|
(hasta C++11) | |
|
|
(desde C++11) (hasta C++20) |
|
|
|
(desde C++20) | |
| (5) | ||
|
|
(desde C++17) (hasta C++20) |
|
|
|
(desde C++20) | |
Encuentra la primera subcadena igual a la secuencia de caracteres dada. La búsqueda comienza en pos, p. ej., la subcadena encontrada no debe empezar en una posición que preceda a pos.
1) Encuentra la primera subcadena igual a str.
2) Encuentra la primera subcadena igual al rango [s, s+count). Este rango puede contener caracteres nulos.
3) Encuentra la primera subcadena igual a 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 primer carácter ch (se trata como una subcadena de un solo carácter debido a las reglas formales explicadas más abajo).
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 la primera subcadena igual a 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.
Formalmente, una subcadena str se dice que se ha encontrado en la posición xpos si todo lo siguiente es verdadero:
xpos >= pos;xpos + str.size() <= size();- para todas las posiciones
ninstr,Traits::eq(at(xpos+n), str.at(n)).
En particular, esto implica que
- una subcadena puede encontrarse solamente si
pos <= size() - str.size(); - una subcadena vacía se encuentra en la posición
possi y solo sipos <= size(); - para una subcadena que no está vacía, si
pos >= size(), la función siempre devuelve npos.
Parámetros
| str | - | La cadena a buscar. |
| pos | - | La posición en la cual iniciar la búsqueda. |
| count | - | La longitud de la subcadena a buscar. |
| s | - | Puntero a la cadena de caracteres a 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 encontró dicha subcadena.
Excepciones
2-3) No lanza nada.
5)
Especificación
noexcept: (desde C++11)
|
|
||
Ejemplo
#include <string> #include <iostream> void imprime(std::string::size_type n, std::string const &s) { if (n == std::string::npos) { std::cout << "no se encuentra\n"; } else { std::cout << "se encuentra: " << s.substr(n) << '\n'; } } int main() { std::string::size_type n; std::string const s = "esto es una cadena"; // buscar desde el principio de la cadena n = s.find("es"); imprime(n, s); // buscar desde la posición 5 n = s.find("es", 5); imprime(n, s); // encuentra un solo carácter n = s.find('c'); imprime(n, s); // encuentra un solo carácter n = s.find('q'); imprime(n, s); }
Salida:
se encuentra: esto es una cadena se encuentra: es una cadena se encuentra: cadena no se encuentra
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ó. |
Véase también
| Encuentra la primera aparición de una subcadena de caracteres (función) [editar] | |
| Encuentra la primera aparición de una cadena ancha dentro de otra (función) [editar] | |
| Encuentra la primera aparición de un carácter (función) [editar] | |
| Encuentra la primera aparición de un carácter ancho en una cadena ancha (función) [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] | |
| Encuentra la última ausencia de caracteres (función miembro pública) [editar] | |
| Busca una subsecuencia de elementos. (plantilla de función) [editar] |