C ++ String Find_first_of

C ++ String Find_first_of

En c ++ find_first_of, en lo que respecta a una cadena de destino, significa: Encuentre la primera aparición de una secuencia de caracteres, en la cadena de destino. Una subtracción particular puede ocurrir más de una vez. Entonces, el trabajo del FIND_FIRST_OF () Función es encontrar la primera ocurrencia de esa subtracción particular en la cadena de destino.

Considere la cadena,

"Es que nunca digas nunca más."

El primer personaje, 'I' está en el índice cero. El segundo, 't' está en el índice 1; El tercero, que es un espacio, está en el índice 2; El cuarto, 'I' está en el índice 3; etcétera. "Nunca" ocurre dos veces en la cadena literal. 'n' para el primer "nunca" ocurre en el índice 11. 'n' para el segundo "nunca" ocurre en un índice más alto. Entonces, la primera aparición de "nunca" comienza en el índice 11.

La cadena anterior debe ser la lista de un objeto de cadena construido a partir de una clase de cadena. Un programa C ++ para usar la función C ++ find_first_of () debe comenzar con:

#incluir
#incluir
usando el espacio de nombres STD;

La biblioteca de cadenas está incluida. find_first_of () es una función miembro de la clase de cadena. Todo el código para la cadena para este artículo se realiza en la función Main ().

Hay cinco variantes de la FIND_FIRST_OF () Función. Cuando hay más de una variante de una función, se dice que la función está sobrecargada. Este artículo explica cómo usar el sobrecargado find_first_of () Funciones de miembro.

size_type find_first_of (gráfico C, size_type pos = 0)

Esta función devuelve el índice de la primera ocurrencia de un carácter particular (subtracción de un carácter) en la cadena de destino. El primer parámetro se refiere al personaje. El segundo parámetro indica que la búsqueda comienza desde el índice 0 (predeterminado). La construcción (instanciación) del objeto de cadena de destino puede ser:

String str = "Es que nunca volver a decir nunca más.";

Deje que el personaje sea buscar, sea 'n'. 'n' ocurre más de una vez. En este caso, la posición devuelta es 11, ya que la primera 'n' está en el índice 11.

El siguiente código ilustra el uso de esta función, donde el argumento para el primer parámetro es un identificador:

String str = "Es que nunca volver a decir nunca más.";
char ss = 'n';
int i = str.find_first_of (ss);
cout << i << endl;

La salida es 11.

El segundo parámetro, "size_type pos = 0" en la función significa que la búsqueda comienza desde cero. Si la búsqueda comenzara desde un índice después del primer 'n', entonces el índice para el segundo 'n', se habría devuelto. El siguiente programa ilustra esto con el primer argumento que es literal.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ('n', 17);
cout << i << endl;
regresar 0;

La salida es 21.

size_type find_first_of (constre de constante* s, size_type pos = 0)

Esta función devuelve el índice para el primer carácter de la primera ocurrencia de una substrucción particular (secuencia de caracteres) en la cadena de destino. El primer parámetro se refiere a un puntero constante de secuencia de caracteres (sub-string). El segundo parámetro indica que la búsqueda comienza desde el índice 0 (predeterminado, cuando el parámetro está ausente). La salida del siguiente programa es 11, con la búsqueda comenzando desde cero:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
const char* ss = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
regresar 0;

size_type find_first_of (const t & t, size_type pos = 0)

Esta función devuelve el índice para el primer carácter de la primera ocurrencia de una substrucción particular (secuencia de caracteres), en la cadena de destino. El primer parámetro se refiere a una matriz de Chars. El segundo parámetro indica que la búsqueda comienza desde el índice 0 por defecto. La salida del siguiente programa es 11, con la búsqueda comenzando desde cero:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
char ss [] = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
regresar 0;

La salida es 11. La declaración,

char ss [] = "nunca";
También podría haber sido,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Tenga en cuenta el personaje de NUL, '\ 0' y su posición. El literal, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' se puede usar en el código en lugar del identificador SS, como en el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
cout << i << endl;
regresar 0;

La salida sigue siendo 11, como debería.

size_type find_first_of (const básico_string & str, size_type pos = 0)

Esta función es similar a la anterior, pero el primer argumento es un objeto de cadena construido a partir de la clase de cadena. En el siguiente programa, el primer argumento es el identificador de un objeto de cadena construido a partir de la clase de cadena (la búsqueda comienza desde cero):

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
cadena ss = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
regresar 0;

La salida es 11. El argumento podría haber sido la construcción de cuerdas, yo.mi. cadena ("nunca") como en:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of (string ("nunca"));
cout << i << endl;
regresar 0;

La salida es 11 aquí. Recuerde que un objeto de cadena aún se puede construir de la siguiente manera:

cadena ss = "nunca";

Entonces, para esta función, el primer argumento aún puede ser un literal de cadenas, como en el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ("nunca");
cout << i << endl;
regresar 0;

La salida es 11.

size_type find_first_of (constre* s, size_type pos, size_type n)

Esta función es similar a la anterior. Si el tercer argumento es menor o igual al tamaño de la subtracción pero mayor que 0, la función devuelve el número esperado. El siguiente código demuestra el uso del tercer argumento:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ("nunca", 17, 4);
cout << i << endl;
regresar 0;

La salida es 21.

Secuencia no encontrada

¿Qué pasa si no se encuentra la subfacción?? Considere el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ("bcdfu");
cout << i << endl;
regresar 0;

La salida es -1. Si la secuencia (sub -string) no tiene carácter en la cadena de destino, el valor de retorno de la función es -1. Si la secuencia es la cadena vacía, el valor de retorno sigue siendo -1.

Considere la secuencia,

"Uehydyw"

Y la cadena de destino,

"Es eso nunca volver a decir nunca más."

'H' en la subtracción, es el primer carácter en la subtracción que ocurre primero en la cadena de destino. Ocurre en el índice 7 en la cadena de destino.

Entonces, el índice que se devuelve de la cadena de destino, es el primer carácter de la subtracción que coincide con la primera ocurrencia de sí misma en la cadena de destino. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

String str = "Es que nunca volver a decir nunca más.";
int i = str.find_first_of ("Uehydyw");
cout << i << endl;
regresar 0;

La salida es 7.

¿Qué pasa si la secuencia de caracteres es más larga que la cadena de destino?? Considere el siguiente programa:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

cadena str = "abcde";
int i = str.find_first_of ("abcdefghijk");
cout << i << endl;
regresar 0;

La salida es 0. Esto se debe a que la cadena de destino es en realidad la primera secuencia de caracteres de la secuencia (subtracción). ¿Y qué pasaría si la secuencia fuera más larga que la cadena de destino y no existe un carácter de la secuencia en la cadena objetivo?? Considera lo siguiente:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

cadena str = "abcde";
int i = str.find_first_of ("fghijklmnop");
cout << i << endl;
regresar 0;

La salida es -1, todavía en conformidad con el hecho de que, si la secuencia no se encuentra en la cadena de destino, el valor de retorno de la función sería -1.

Conclusión

find_first_of () es una función miembro de la clase de cadena. Devuelve el índice de la primera ocurrencia de una secuencia de caracteres que se encuentran en una cadena de destino. El conteo de índice comienza desde 0. Esta secuencia se puede llamar substing. Si no se encuentra una secuencia, -1 se devuelve. El find_first_of () La función miembro está sobrecargada de cinco maneras. Las diferentes funciones sobrecargadas toman diferentes formatos de secuencia de caracteres. Para todas estas funciones sobrecargadas, buscar a partir de 0 es el valor predeterminado. Sin embargo, cada uno tiene un argumento que puede permitir que la búsqueda comience desde cualquier índice por delante.