C ++ string find_first_of

C ++ string find_first_of

Em C ++ find_first_of, como diz respeito a uma string de destino, significa: encontre a primeira ocorrência de uma sequência de caracteres, na sequência de destino. Uma sub-fita particular pode ocorrer mais de uma vez. Então, o trabalho do função find_first_of () é encontrar a primeira ocorrência dessa sub-string específica na string de destino.

Considere a string,

"É que nunca diz nunca mais."

O primeiro personagem, 'i' está no índice zero. O segundo, 't' está no índice 1; O terceiro, que é um espaço, está no índice 2; O quarto, 'i' está no índice 3; e assim por diante. "Nunca" ocorre duas vezes na liteal da corda. 'n' para o primeiro "nunca" ocorre no índice 11. 'n' para o segundo “nunca” ocorre em um índice mais alto. Então, a primeira ocorrência de "nunca" começa no índice 11.

A string acima deve ser a lista de um objeto String construído a partir de uma classe de string. Um programa C ++ para usar a função C ++ find_first_of () deve começar com:

#incluir
#incluir
usando namespace std;

A biblioteca de string está incluída. find_first_of () é uma função de membro da classe String. Todo o código para a string deste artigo é feito na função principal ().

Existem cinco variantes do função find_first_of (). Quando há mais de uma variante de uma função, diz -se que a função está sobrecarregada. Este artigo explica como usar o sobrecarregado FEND_FIRST_OF () FUNÇÕES DE MEMBRO.

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

Esta função retorna o índice da primeira ocorrência de um personagem específico (sub-string de um caractere) na string de destino. O primeiro parâmetro refere -se ao personagem. O segundo parâmetro indica que a pesquisa começa no índice 0 (padrão). A construção (instanciação) do objeto de sequência de destino pode ser:

string str = "É que nunca mais dizia.";

Deixe o personagem ser pesquisado, seja 'n'. 'n' ocorre mais de uma vez. Nesse caso, a posição retornada é 11, pois o primeiro 'n' está no índice 11.

O código a seguir ilustra o uso desta função, onde o argumento do primeiro parâmetro é um identificador:

string str = "É que nunca mais dizia.";
char ss = 'n';
int i = str.find_first_of (ss);
cout << i << endl;

A saída é 11.

O segundo parâmetro, “size_type pos = 0” na função significa que a pesquisa começa de zero. Se a pesquisa começar de um índice após o primeiro 'n', então o índice do segundo 'n' teria sido devolvido. O programa a seguir ilustra isso com o primeiro argumento sendo um literal.

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ('n', 17);
cout << i << endl;
retornar 0;

A saída é 21.

size_type find_first_of (const Chart* s, size_type pos = 0)

Esta função retorna o índice para o primeiro caractere da primeira ocorrência de uma sub-string específica (sequência de caracteres) na string de destino. O primeiro parâmetro refere-se a um ponteiro constante da sequência de caracteres (sub-string). O segundo parâmetro indica que a pesquisa começa no índice 0 (padrão, quando o parâmetro está ausente). A saída do programa a seguir é 11, com a pesquisa começando de zero:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
const char* ss = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
retornar 0;

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

Esta função retorna o índice para o primeiro caractere da primeira ocorrência de uma sub-string específica (sequência de caracteres), na string de destino. O primeiro parâmetro refere-se a uma variedade de cargas. O segundo parâmetro indica que a pesquisa começa no índice 0 por padrão. A saída do programa a seguir é 11, com a pesquisa começando de zero:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
char ss [] = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
retornar 0;

A saída é 11. A declaração,

char ss [] = "nunca";
poderia muito bem ter sido,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Observe o caráter nu, '\ 0' e sua posição. O literal, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' pode ser usado no código no lugar do identificador SS, como no programa a seguir:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
cout << i << endl;
retornar 0;

A saída ainda é 11, como deveria.

size_type find_first_of (const Basic_string & str, size_type pos = 0)

Esta função é semelhante ao acima, mas o primeiro argumento é um objeto de string construído a partir da classe String. No programa a seguir, o primeiro argumento é o identificador de um objeto String construído a partir da classe String (a pesquisa começa em zero):

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
string ss = "nunca";
int i = str.find_first_of (ss);
cout << i << endl;
retornar 0;

A saída é 11. O argumento poderia ter sido a construção de cordas, eu.e. String ("nunca") como em:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of (string ("nunca"));
cout << i << endl;
retornar 0;

A saída é 11 aqui. Lembre -se de que um objeto de string ainda pode ser construído da seguinte maneira:

string ss = "nunca";

Portanto, para esta função, o primeiro argumento ainda pode ser um literal de cordas, como no programa a seguir:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ("nunca");
cout << i << endl;
retornar 0;

A saída é 11.

size_type find_first_of (const Chart* s, size_type pos, size_type n)

Esta função é semelhante ao acima. Se o terceiro argumento for menor ou igual ao tamanho da sub-string, mas maior que 0, a função retorna o número esperado. O código a seguir demonstra o uso do terceiro argumento:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ("nunca", 17, 4);
cout << i << endl;
retornar 0;

A saída é 21.

Sequência não encontrada

E se a sub-cordão não for encontrada? Considere o seguinte programa:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ("bcdfu");
cout << i << endl;
retornar 0;

A saída é -1. Se a sequência (sub -string) não tiver caráter na sequência de destino, o valor de retorno da função é -1. Se a sequência for a string vazia, o valor de retorno ainda será -1.

Considere a sequência,

"Uehydyw"

E a corda de destino,

“É que nunca diz nunca mais.”

'H' na sub-string, é o primeiro caractere na sub-string que ocorre primeiro na string de destino. Ocorre no índice 7 na sequência de destino.

Portanto, o índice que é retornado da sequência de destino é o primeiro caractere da sub-string que corresponde à primeira ocorrência de si mesma na string de destino. O programa a seguir ilustra o seguinte:

#incluir
#incluir
usando namespace std;
int main ()

string str = "É que nunca mais dizia.";
int i = str.find_first_of ("uehydyw");
cout << i << endl;
retornar 0;

A saída é 7.

E se a sequência de caracteres for mais longa que a string de destino? Considere o seguinte programa:

#incluir
#incluir
usando namespace std;
int main ()

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

A saída é 0. Isso ocorre porque a sequência de destino é na verdade a primeira sequência de caracteres da sequência (sub-string). E se a sequência fosse mais longa que a string de destino e não existe caráter da sequência na sequência de alvo? Considere o seguinte:

#incluir
#incluir
usando namespace std;
int main ()

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

A saída é -1, ainda em conformidade com o fato de que, se a sequência não for encontrada na sequência de destino, o valor de retorno da função seria -1.

Conclusão

find_first_of () é uma função de membro da classe String. Ele retorna o índice da primeira ocorrência de uma sequência de caracteres encontrados em uma string de destino. A contagem de índice começa de 0. Esta sequência pode ser chamada de sub-cordão. Se uma sequência não for encontrada, -1 será retornado. O find_first_of () A função de membro está sobrecarregada de cinco maneiras. As diferentes funções sobrecarregadas levam diferentes formatos de sequência de personagens. Para todas essas funções sobrecarregadas, pesquisar o começo de 0 é o padrão. No entanto, cada um tem um argumento que pode permitir que a pesquisa seja iniciada em qualquer índice à frente.