El método find de la clase string (o lo que es lo mismo, el método string::find) busca una palabra en una frase, es decir, encuentra la posición de un string corto dentro de otro más largo.
Se invoca sobre el string largo:
string frase = "bla ble bli blo blu"; int pos = frase.find("bli");
y devuelve una posición entera: el índice del primer caracter de la palabra buscada en la frase. En el ejemplo, la variable pos valdrá 8, porque "bli" empieza en la posición 8 en "bla ble bli blo blu".
Cuando la palabra buscada no aparece en la frase:
pos = frase.find("Bla");
entonces string::find devuelve un -1. Es importante ver también que las mayúsculas importan ("Bla" no aparece en "bla ble bli blo blu").
string::find también permite empezar a buscar a partir de cierta posición. En esta versión de string::find hay que poner 2 parámetros: la palabra buscada y la posición desde dónde empezar. Por ejemplo:
string otrafrase = "verde que te quiero verde"; int p1, p2; p1 = otrafrase.find("verde", 0); // empieza en 0, encuentra "verde" en 0 p2 = otrafrase.find("verde", 6); // empieza en 6, encuentra "verde" en 20
está claro que "verde" aparece 2 veces en otrafrase, o sea que si hacemos la búsqueda empezando en la posición 0 se econtrará el primero (en la posición 0), y si empezamos en la posición 6 se encontrará el segundo (en la posición 20).
string::find tiene otras dos versiones donde se puede buscar un caracter solamente, en vez de una palabra. El primer parámetro será el caracter a buscar y el segundo, que es opcional, es la posición donde empezar, como cuando buscamos palabras. Si se omite, se tomará 0:
string contestacion = "Mi nombre es Bond. James Bond."; int p3, p4; p3 = contestacion.find('.'); // p3 = 17 p4 = contestacion.find('.', 18); // p4 = 29
Como en las otras versiones, si no se encuentra el caracter buscado la posición retornada será -1.
En preparación