Visualização de string c ++

Visualização de string c ++
A contagem de índice de caracteres de sequência começa com zero (não um). Uma linha de string é uma sequência contínua de caracteres de uma string literal. Toda a corda é uma grande variedade. Faixas menores podem ser obtidas de uma corda. A idéia de uma visualização de string é obter um alcance decidido de uma string, de modo que o intervalo seja como uma string independente cujo próprio personagem esteja no índice zero. Embora um objeto de visão de string possa ficar sozinho, é oficialmente uma visão de alcance e não pode ser alterado normalmente.

A String View é uma classe de sua própria biblioteca que deve ser incluída em um programa C ++ da seguinte maneira:

#incluir

Possui funções membros que foram categorizadas nos seguintes títulos: construção, capacidade, acesso a elementos, suporte ao iterador, modificadores, operações de string e pesquisa. Estranhamente, String_view tem modificadores, que conflitam com sua definição. Que é esclarecido abaixo neste tutorial. Todo o código de exibição da string neste tutorial está na função C ++ main ().

Conteúdo do artigo

  • Construção
  • Capacidade
  • Acesso ao elemento
  • Suporte do iterador
  • Modificadores
  • Operações de string
  • Procurando
  • Conclusão

Construção
BASIC_STRING_VIEW (const Chart* str)

Isso constrói uma vista de string, de uma string inteira literal, de constante para caracteres. O seguinte ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str);
cout <retornar 0;

A saída é:

um dois três quatro cinco

Observe que String_view, em vez de Basic_string_View, foi usado para o nome do construtor.

BASIC_STRING_VIEW (const Chart* str, size_type len)

Esta função de membro janela os primeiros caracteres do argumento da string. Janela não está copiando. Sem cópias de construtor de visualização de string. Eles apenas fazem referência. O programa a seguir mostra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
cout <retornar 0;

A saída é:

um dois três

Basic_string_view (const Basic_string_View &)

Este construtor é o mesmo que o primeiro construtor acima, mas seu argumento é um objeto String_view, que já tinha sua visão. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
string_view strvv (strv);
cout <retornar 0;

A saída é:

um dois três

Basic_string_view & Operator = (const Basic_string_view &)

Este construtor de membro é semelhante ao acima, mas o string_view é atribuído e não passado como um argumento. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
string_view strvv = strv;
cout <retornar 0;

A saída é:

um dois três

Capacidade
size_type size () const

Lembre -se, um string_view é um intervalo de alguma string original. Não é uma cópia do intervalo. Tem referências aos elementos de personagem do intervalo na string original. O tamanho desta String_View (View Window) ainda pode ser determinado porque o String_View é um objeto instanciado da classe String_View. O tamanho é retornado pela função de membro do tamanho (). O programa a seguir demonstra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
int sz = strv.tamanho();
cout <retornar 0;

A saída é:

13

bool vazio () const

Um objeto String_View pode ser criado vazio, conforme mostrado no seguinte programa. Quando vazio, a função de membro vazio () retornará true; Caso contrário, ele retornará falso. O programa é:

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

string_view strv;
bool bl = strv.vazio();
cout <retornar 0;

A saída é 1, para verdadeiro. Observe que o objeto String_view foi criado sem parênteses e sem nenhum argumento.

Acesso ao elemento
Const_Reference Operator [] (size_type pos) const

O operador de suporte quadrado pode ser usado para ler um valor (caractere) no String_view. O programa a seguir usa um loop for para ilustrar isso:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
para (int i = 0; i cout <cout <retornar 0;

A saída é:

um dois três

Nota: Um personagem em um objeto String_view não pode ser alterado. Qualquer mudança possível deve ser feita na string original.

Suporte do iterador
const_iterator Begin () const

Esta função de membro retorna um iterador constante que aponta para o primeiro elemento de caractere do objeto String_view. Aqui, const_iterator significa que o personagem não pode ser alterado. No entanto, o iterador pode ser incrementado para apontar para o próximo elemento de caractere; ou adicione um número inteiro semelhante a adicionar um número inteiro a um índice para apontar para outro elemento de personagem à frente. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
string_view :: const_iterator it = strv.começar();
It ++;
it = it + 4;
cout <<*it <retornar 0;

A saída é 'w'. Observe dessa maneira o iterador foi construído.

const_iterator end () const

Esta função de membro retorna um iterador constante que aponta logo após o último elemento do caractere do objeto String_view. O iterador pode ser diminuído para apontar para o último elemento de caractere ou ser subtraído um número inteiro, da mesma forma que subtrair um número inteiro de um índice, para apontar para outro elemento de caractere antes. Aqui, const_iterator significa que o personagem não pode ser alterado. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
string_view :: const_iterator it = strv.fim();
isto--;
it = it - 4;
cout <<*it <retornar 0;

A saída é 't'.

Modificadores
void remove_prefix (size_type n)

Isso remove uma primeira sub-string do String_view, mas não remove nenhum caractere da string original. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
cout <strv.remover_prefix (4);
cout <cout <retornar 0;

A saída é:

um dois três
dois três
um dois três quatro cinco

void remove_suffix (size_type n)

Isso remove uma última sub-string do string_view, mas não remove nenhum caractere da string original. O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
cout <strv.remover_suffix (6);
cout <cout <retornar 0;

A saída é:

um dois três
um dois
um dois três quatro cinco

Operações de string
size_type cópia (gráfico* s, size_type n, size_type pos = 0) const

Esta função copia uma variedade de caracteres do objeto String_view (não da string original) para substituir a primeira sub-string de outra string. O programa a seguir ilustra o seguinte:

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

char strb [] = "aaa bbb ccc ddd eee";
const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
cout <strv.cópia (strb, 3, 4);
cout <cout <retornar 0;

A saída é:

um dois três
Dois BBB CCC DDD EEE
um dois três quatro cinco

Existem duas cordas independentes aqui. O String_View não é uma string independente. É uma janela de alcance de uma das cordas independentes. Observe que o primeiro parâmetro da função do membro, "Gráfico* s" significa uma matriz de cartas e não uma const-char* .

int compare (BASIC_STRING_VIEW S) const

O número de caracteres de dois string_views é comparado aqui. Se o único, usando a função do membro compare (), for maior, um número positivo é retornado. Se os números forem iguais, o zero será retornado. Se o objeto String_view que emprega a função do membro tiver um número mais baixo, um número negativo será retornado. O programa a seguir ilustra o seguinte:

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

const char* stra = "um dois três quatro cinco";
string_view strva (stra, 13);
cout <const char* strb = "aaa bbb ccc ddd eee";
string_view strvb (strb, 11);
cout <int ret = strvb.Compare (strva);
cout <retornar 0;

A saída é:

um dois três
AAA BBB CCC
-14, no computador do autor.

Procurando
size_type find (const gráfico* s, size_type pos = 0) const

Esta função de membro procura a ocorrência da primeira sub-string, s no string_view em questão. Ele retorna o índice do primeiro caractere da sub-string encontrada. Se não for encontrado, ele retorna -1. O segundo argumento diz onde a pesquisa começa (o índice padrão é 0). O programa a seguir ilustra o seguinte:

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

const char* str = "um dois três quatro cinco";
string_view strv (str, 13);
cout <const char* cs = "dois";
int ret = strv.encontre (cs, 0);
cout <retornar 0;

A saída é:

um dois três
4

Conclusão

A String_View é uma visualização de janela de uma variedade de string original. Não é uma cópia dos personagens. Os personagens são referidos. Há uma classe de exibição de string da qual os objetos String_view são instanciados. String-View tem muitas funções de membro. As funções de membro básico das diferentes categorias foram explicadas acima.