Substring C ++ de índice para índice

Substring C ++ de índice para índice
Uma sub-cordão ou substring ou alcance é apenas uma parte de uma sequência de caracteres dentro da string literal. Saber o que é uma substring no C ++ não é suficiente para um programador. O programador precisa entender como identificar a substring por código. O programador precisa saber como devolver uma substring. O programador precisa saber como excluir uma substring. O programador precisa saber como substituir uma substring após a exclusão.

Uma string pode ser criada de duas maneiras principais: por const char* (array-of-chars) ou instantando da classe String. No caso de instanciação da classe String, a biblioteca de string deve ser incluída no programa C ++. Identificar, retornar, excluir e substituir uma substring em C ++, normalmente é feito apenas com o objeto String instanciado da classe String.

O objeto String é uma estrutura de dados com métodos (funções de membro). Sua lista consiste em elementos, onde cada elemento tem um personagem. Os valores da lista são os caracteres. Como uma matriz, cada personagem do objeto String pode ser acessado por um índice. Portanto, uma sub-fita pode ser identificada por índices: um índice mais baixo e um índice mais alto. O intervalo começa do índice mais baixo até o índice mais alto, excluindo o índice mais alto. O caráter para o índice mais alto não está incluído no intervalo, e o comprimento da sub-string é do caráter do índice inferior ao caráter pouco antes do do índice mais alto.

Dois iteradores também podem identificar uma substring ou alcance: o primeiro iterador é para o início do intervalo, e o último iterador, é para o personagem, que é logo após o último personagem (ou no final da cordas). Existe uma relação simples entre iterador e índice - veja abaixo.

Este artigo explica o que é uma substring e como identificar, retornar, excluir e substituir uma substring em c++.

Conteúdo do artigo

  • Identificando e retornando uma substring
  • Relacionando o iterador e o índice
  • Excluindo uma substring
  • Substituindo uma substring
  • Conclusão

Identificando e retornando uma substring

A classe C ++ possui uma função de membro chamada, substr () para sub-string (). A sintaxe é:

Basic_string substring (size_type pos = 0, size_type n = npos) const

Esta função retorna a substring como um objeto de string. O primeiro argumento indica a posição do índice onde a substring começa. O caráter do POS está incluído na substring. O segundo argumento dá o comprimento da substring. O comprimento é o número de caracteres que começam do POS. Não inclui o personagem para o índice mais alto. O índice mais alto é: POS + NPOs (embora o comprimento, as NPOs sejam medidas em um lugar para a esquerda). A contagem de índice começa de zero. O programa a seguir ilustra o uso desta função de membro:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
String substrin = str.substr (8, 5);
cout << substrin << endl;
retornar 0;

A saída é:

três

Se esses dois argumentos estiverem ausentes, toda a string será considerada, conforme ilustrado no seguinte programa:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
String substrin = str.substr ();
cout << substrin << endl;
retornar 0;

A saída é:

um dois três quatro cinco

A palavra reservada, const no final da sintaxe, significa que a função substr () copia a sub-string e a devolve. Não exclui a sub-cordão.

Relacionando o iterador e o índice

Quando um iterador está apontando para um personagem, para obter o iterador para o final do intervalo, basta adicionar o comprimento (número) de caracteres para o intervalo, e o novo iterador apontará para o final do intervalo. O personagem deste último iterador não está incluído no intervalo ou substring. Alcance e substring aqui são as mesmas coisas (elas são a mesma coisa acima). Para a função de membro do Substr () String, NPOs é o comprimento do intervalo.

O iterador que corresponde ao índice zero é:

str.começar()

NPOs podem ser adicionados a este iterador para apontar para o último elemento do intervalo. O último elemento ou o último caractere do intervalo não faz parte da substring.

O iterador que corresponde ao ponto logo após o último personagem da string é:

str.fim()

NPOs podem ser subtraídos disso para apontar para qualquer primeiro caractere desejado da string.

BEGIN () e END () são funções membros da classe String.

Excluindo uma substring

Uma substring é identificada em um objeto de string, com os argumentos, POS e NPOs da função substr (). Lembre -se de que as NPOs são um intervalo. A classe String também possui uma função de membro chamada EASE (). EASE () está em formulários sobrecarregados. Uma das funções de membro da EASE () sobrecarregadas identifica a substring com POS e NPOs. A sintaxe é:

Basic_string & Erase (size_type pos = 0, size_type n = npos)

Esta função apaga exclui a substring e retorna a string original com a substring excluída.

Portanto, para excluir uma substring, a função substr () não é necessária. São seus argumentos que são necessários. Para excluir uma substring, use a função de membro apagada do objeto String. Para ter uma cópia da substring, basta usar a função substr () antes de apagar. O programa a seguir mostra uma boa maneira de excluir uma substring:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
String substrin = str.substr (8, 5);
string ret = str.apagar (8, 5);
cout <cout <cout <retornar 0;

A saída é:

três
One_two__four_five
One_two__four_five

Uma sintaxe para excluir uma substring com os argumentos do iterador é:

Erase do iterador (const_iterator primeiro, const_iterator Último)

Com isso, o início da substring é identificado pela primeira vez pelo iterador, correspondente ao índice, POS. Para obter o final da substring, o iterador é identificado por Last, que é obtido por fazer, First + NPOs. A codificação para excluir uma substring usando esta variante de função de ease () sobrecarregada é deixada como um exercício para o leitor.

Substituindo uma substring

O que realmente identifica uma substring são os argumentos: POS e NPOS. Para devolver uma substring, use a função de membro da classe String, substr (). Para excluir uma substring, use a função de membro da classe String, EASE (). E para substituir uma substring por um de qualquer comprimento, use a função de membro da classe String, substitua (). A função de substituição tem muitas variantes sobrecarregadas. O que usa o índice é:

Basic_String & Substituir (size_type pos1, size_type n1, const t & t)

onde POS1 é POS, N1 é NPOS e T é uma variedade de cartas independente para substituição. Ele retorna a string original, incluindo a substituição.

Nota: em C ++, uma substring não deve ser excluída (apagada) antes de ser substituída.
O programa a seguir mostra uma boa maneira de substituir uma substring:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
chs chs [] = "ccc";
String substrin = str.substr (8, 5);
string ret = str.substituir (8, 5, chs);
cout <cout <cout <retornar 0;

A saída é:

três
ONE_TWO_CCC_FOUR_FIVE
ONE_TWO_CCC_FOUR_FIVE

O substituto do código acima tinha menos de 5 caracteres de comprimento. O programa a seguir mostra o caso em que a substituição é superior a 5 caracteres:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
chs chs [] = "ccccccccc";
String substrin = str.substr (8, 5);
string ret = str.substituir (8, 5, chs);
cout <cout <cout <retornar 0;
três
ONE_TWO_CCCCCCCC_FOUR_FIVE
ONE_TWO_CCCCCCCC_FOUR_FIVE

Uma sintaxe para substituir uma substring pelos argumentos do iterador é:

Basic_String & Substituir (const_iterator i1, const_iterator i2, const T&T)

Com esta sintaxe, o início da substring é identificado pelo iterador, i1, que corresponde ao índice, pos. Para obter o final da substring, o iterador é identificado por i2, que é obtido por fazer, i1 + npos. t tem o mesmo significado que acima. O programa a seguir mostra como usar esta sintaxe:

#incluir
#incluir
usando namespace std;
int main ()
String str = "One_two_three_four_five";
String :: const_iterator itb = str.começar();
String :: const_iterator itpos = itb + 8;
String :: const_iterator ITNPOS = ITPOS + 5;
chs chs [] = "ccccc";
String substrin = str.substr (8, 5);
string ret = str.substituir (ITPOS, ITNPOS, CHS);
cout <cout <cout <retornar 0;

A saída é:

três
ONE_TWO_CCCC_FOUR_FIVE
ONE_TWO_CCCC_FOUR_FIVE

Observe que os iteradores usados ​​são iteradores constantes. O iterador que corresponde ao índice, POS, é obtido com ITB + 8. O iterador que corresponde ao índice mais alto é obtido com ITPOS + 5.

Conclusão

Uma sub-string ou substring ou alcance é apenas uma parte de uma sequência de caracteres dentro de uma string literal. Para devolver uma substring, use a função de membro da classe String, substr (). Para excluir uma substring, use a função de membro da classe String, EASE (). Para substituir uma substring, use a função de membro da classe String, substitua (). Para todas essas funções, o argumento do índice, o POS e o intervalo do índice, NPOs, são essenciais para identificar a substring da sequência principal.