As cadeias de C ++ podem ser declaradas de duas maneiras principais: como um ponteiro constante para os chars (matriz de chars) ou instanciados da classe String da biblioteca de cordas. Aqui, as funções Pop_back () e EASE () são do objeto String, instanciadas da classe String. O último elemento de uma matriz de chars não pode ser removido porque uma variedade de cargas não é um objeto instanciado.
É verdade que uma string literal consiste em valores que são caracteres. Cada personagem está dentro de um elemento. Então a string literal realmente consiste em elementos. O último personagem é removido com seu último elemento.
Este artigo explica como remover o último elemento de uma string, junto com seu personagem.
Conteúdo do artigo
void pop_back ()
Esta função de membro da classe String remove o último elemento da string. A função retorna vazios. Isso significa que nada é devolvido e nenhuma variável pode receber qualquer coisa devolvida dele. O uso desta função é ilustrado no seguinte programa:
#incluir
#incluir
usando namespace std;
int main ()
string str = "lmnopqr";
cout <str.pop_back ();
para (int i = 0; icout < cout < retornar 0;
A saída é:
Lmnopqr
LMNOPQ
O último personagem foi removido. As duas primeiras linhas do programa incluem as bibliotecas necessárias. Um deles, é claro, é a biblioteca de cordas. A biblioteca de string deve ser incluída, pois todas as strings envolvidas são instanciadas da classe String. A próxima linha é uma declaração. Ele declara que todos os nomes abaixo são do espaço de nome padrão, a menos que indicado de outra forma.
O corpo principal () da função começa com a declaração (instanciação) do objeto String. A próxima declaração exibe o literal desta string recém -declarada na saída. A declaração após remove o último caractere, usando a função Pop_back (). O próximo segmento de código usa um loop for com índices para exibir todos os caracteres, que não têm mais o último, em uma sequência contínua.
Erase do iterador (const_iterator p)
Se o iterador apontar para o último elemento (caractere), a função de membro da apagar poderá remover o último elemento. Esta função retorna um iterador que aponta para o elemento logo após o removido (ou logo após o último elemento, se o removido foi o último elemento). O programa a seguir ilustra o seguinte:
#incluir
#incluir
usando namespace std;
int main ()
string str = "lmnopqr";
cout <string :: iterator p = str.fim();
P--;
string :: iterator it = str.apagar (P);
para (int i = 0; icout < cout < retornar 0;
A saída é:
Lmnopqr
LMNOPQ
As três primeiras linhas do programa são explicadas da mesma maneira que o programa anterior. No corpo da função main (), a primeira declaração declara o objeto String. A próxima declaração exibe o literal desta string recém -declarada na saída. Esta impressão ainda poderia ter sido feita com um loop para. A declaração após obtém um iterador que aponta logo após o último elemento do personagem. Isso é feito com a função de membro, end (). Observe a maneira como o iterador foi declarado (lado esquerdo de, =). Então o iterador está diminuído para apontar para o último elemento.
Em seguida, o último elemento é removido com a função de membro EASE (). O próximo segmento de código usa um loop for com índices para exibir todos os caracteres, que não têm mais o último no terminal em uma sequência contínua.
Erase do iterador (const_iterator primeiro, const_iterator Último)
Esta função de membro apagaria uma variedade de elementos de caracteres da string. Aqui, primeiro é um iterador que aponta para o primeiro elemento do intervalo. O iterador retornou pontos para o elemento que estava lá, logo após o intervalo. Se não houvesse elementos lá, apontaria para o final da string. O último é um iterador que aponta para o último elemento do intervalo. Este último elemento não está envolvido na apagamento.
Para remover o último elemento, o truque é fazer “último”, apontar logo além do último elemento da string; e fazer o "primeiro" ponto no último elemento da string. Com tudo isso, a função apaga retirará o último elemento. O programa a seguir mostra como é feito:
#incluir
#incluir
usando namespace std;
int main ()
string str = "lmnopqr";
cout <string :: iterator p = str.começar();
p = p + 6;
string :: iterator q = str.fim();
string :: iterator it = str.apagar (p, q);
para (it = --it; it> = str.começar(); isto--)
cout << *it;
cout <retornar 0;
A saída é:
Lmnopqr
QPONML
Depois de remover o personagem, R (juntamente com seu elemento), a string restante foi impressa de caractere por caracteres, mas na ordem inversa.
As três primeiras linhas do programa são explicadas da mesma maneira que o programa anterior. No corpo da função main (), a primeira declaração declara o objeto String. A próxima declaração imprime a string recém -declarada.
O segmento de código a seguir tem três declarações. O primeiro declara um iterador que aponta para o primeiro personagem da string. Mais seis caracteres da corda devem ser contados antes do último personagem, 'r' é alcançado. Então, a segunda declaração deste segmento adiciona 6 ao iterador. A próxima declaração neste segmento declara um iterador, q, que aponta logo após o final da string. A situação está agora definida para apagar o último elemento: q pontos logo após 'r' e P aponta para 'r'.
A declaração que apaga 'r' é:
string :: iterator it = str.apagar (p, q);
Depois que 'r' é apagado, o último personagem se torna 'q'. O iterador devolvido, 'It' aqui, aponta logo após 'q'.
O próximo segmento de código é um loop para. A declaração de inicialização deste loop para simplesmente diminui "ele" para apontar para o novo último personagem, 'q'. 'Q' é impresso no terminal. O loop for continua a diminuir "it", imprimindo o personagem correspondente, enquanto 'it' é maior que o STR.começar(). Quando "It" é igual a STR.BEGIN (), isto é, "It" está apontando para 'L', as impressões de loop para 'l' e para. Dessa forma, a string sem 'r' é impressa em ordem inversa.
Para obter o valor apontado para um iterador, precede o iterador com o operador indiretivo, * .
Basic_string & Erase (size_type pos = 0, size_type n = npos)
Esta função de membro apaga um intervalo, assim como a função acima. No entanto, ele usa índices e não iteradores. Se o argumento POS for 0, o intervalo começará a partir do primeiro elemento. Se o argumento n é o comprimento da string (número de caracteres), o intervalo termina no último caractere. Ambos os argumentos têm seus valores padrão. Esta função retorna o objeto da classe String, com os caracteres do intervalo removidos.
O truque para jogar aqui é tornar o valor do POS o índice do último personagem. O índice do último caractere (elemento) é o tamanho (comprimento) da lista menos 1. O segundo argumento aqui deve ser omitido para este problema. O último índice é dado por,
str.tamanho () - 1
O programa a seguir, usa essa função de membro, para tirar o último personagem, 'r' da string:
#incluir
#incluir
usando namespace std;
int main ()
string str = "lmnopqr";
cout <int l = str.tamanho () - 1;
string ret = str.apagar (l);
para (int i = 0; icout < cout < para (int i = 0; i cout < cout < retornar 0;
A saída é:
Lmnopqr
LMNOPQ
LMNOPQ
A corda original e de retorno perdida 'r'. As três primeiras linhas do programa são explicadas da mesma maneira que o programa anterior. No corpo da função main (), a primeira declaração declara o objeto String. A próxima declaração imprime a string recém -declarada.
A próxima declaração determina o índice do último elemento da string original. A declaração após apagar o último caractere usando este índice. O próximo segmento de código imprime os caracteres da string de retorno, um por um, usando índices. O último segmento de código imprime os caracteres da string original, um por um, usando índices.
Conclusão
A função normal da classe String Class, para remover o último caractere de uma string, com seu elemento que a segura, é a função pop_back (). Existem três funções de membro sobrecarregadas () que também podem ser usadas para isso. Um deles leva um iterador que aponta para o último personagem e remove o último personagem. Outro leva um intervalo, indicado por dois iteradores: um iterador aponta para o último personagem e os outros pontos logo após o último personagem. Com isso, o último personagem é retirado. A terceira função sobrecarregada usa o índice do último caractere para removê -lo. Toda a discussão neste artigo foi compatível com C ++ 20.