Como usar string c ++ literal

Como usar string c ++ literal
O teclado do computador tem caracteres impressos. Quando você pressiona uma tecla, você vê o personagem na tela. Nota: o espaço também é um personagem. Uma string literal é uma sequência de personagens. Este artigo explica como usar literais de string c ++. Você deve saber sobre matrizes C ++ e ponteiros para entender este artigo.

Personagem literal

Um personagem literal é um personagem em citações únicas. Então,

char ident1 = 'a'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

são todas diferentes definições de personagens. Observe que um dígito em citações únicas é um personagem e não um número inteiro.

Uma sequência de fuga como \ ”(veja abaixo) em citações únicas é um personagem. Então,

char ident1 = '"';

é um personagem.

Um único símbolo em citações duplas não é um personagem; é uma série de um personagem. Então "A" ou "C" ou "2" não é um personagem, mas é uma série de um personagem cada.

A variável de um char pode ser transferida, mais tarde no programa, como segue:

char ident = 'x';
ident = 'y';

Para impedir que um personagem designado para um identificador seja alterado, mais tarde no programa, precede a definição com a palavra reservada, const, da seguinte maneira:

const char ident = 'd';

A variável, diz-se que o identificador é somente leitura.

String literal

Uma string literal é uma sequência de caracteres em citações duplas. Então,

char ident1 [] = "eu te amo"; char ident2 [] = "eu odeio 3 de vocês"; char ident3 []
= "Nós somos o mundo"; char ident4 [] = "Hello World!";

são todas diferentes definições de literais de cordas. Observe o uso de citações duplas. Não há nada como uma variável comum para uma string. Uma string literal é uma variedade de chars, onde, em vez de delimitar com , a sequência é delimitada com “”. Os chars não são separados por vírgulas. Qualquer número maior que o número de chars no literal da corda pode ser colocado entre colchetes. No entanto, é melhor deixar os suportes quadrados vazios.

Um único caractere em citações duplas não é um personagem; é uma série de um personagem. Então "A" ou "C" ou "2" não é um personagem, mas uma série de um personagem cada.

Uma variável de string não permite a reinicialização do literal completo, posteriormente no programa - veja abaixo. No entanto, caracteres individuais podem ser assignados - veja abaixo.

Citação única e dupla em caráter ou literal

Para ter uma única citação como personagem, faça algo como,

char ident = '\' ';

Para ter uma cotação dupla como personagem em um literal de cordas, faça algo como,

char ident ident [] = "ab" cd ";

A barra de barriga é usada em uma sequência de fuga, para evitar conflitos com delimitadores. Para ter uma citação dupla como personagem, não há necessidade de barragem: '”' está bem. Para ter uma única citação em uma string literal, não há necessidade de barragem: "ab'cd" está bem.

Como a barra de barriga é usada para escapar de um personagem, ela deve ser escapada com outra barra de barra.

Sequência de fuga

Uma sequência de fuga é uma de:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ v

Cada sequência de escape é normalmente digitada como um personagem dentro de citações únicas ou como uma sequência de fuga dentro de citações duplas.

  • \ ': é usado como um único personagem de citação, dentro de citações únicas.
  • \ ”: É usado como um personagem de dupla citação, dentro de um literal.
  • \? : desde ? é um personagem reservado, deve ser escapar em um literal.
  • \\: a barra de barra.
  • \ a: soa uma campainha de alarme uma vez, quando usada como personagem ou dentro de uma corda literal.
  • \ b: Resultados como um backspace no visor dentro de uma string literal, decolando o personagem anterior.
  • \ f: faz com que a próxima página seja alimentada à impressora quando usada como personagem ou dentro de um literal.
  • \ r: retorna o cursor, onde o próximo personagem deve ser impresso, mas dentro da linha atual.
  • \ n: retorna o cursor para o início da próxima linha ou apenas para a próxima linha, dependendo do sistema operacional.
  • \ t: cria uma guia horizontal.
  • \ V: cria uma guia vertical.

Operações com caracteres

Concatenação

Na definição, dois literais de cordas podem ser unidos ao espaço da seguinte maneira:

char ident ident [] = "abc" "def";
cout << ident << "\n";

A saída é: ABCDEF . Esta definição pode ser estendida a mais de dois literais. Nota: A declaração é uma definição, não apenas uma tarefa. A definição pode até continuar na próxima linha, com espaço separando as linhas da seguinte maneira:

char ident ident [] = "abc" "def"
"ghi";
cout << ident << "\n";

A saída é, abcdefghi.

Nota: Os caracteres não podem ser concatenados dessa maneira, pois as citações únicas para o personagem não podem ter mais de um símbolo.

Operadores de igualdade

Os mesmos personagens no mesmo caso são iguais. Eles não são iguais se não são do mesmo caso. Considerar,

resultado bool = 'b' == 'b';
cout << result << "\n";

== significa iguais, enquanto = significa atribuído e não é igual. A saída é 1 para verdadeira. Considerar,

resultado bool = 'b' == 'b';
cout << result << "\n";

A saída é 0 para false. Considerar,

resultado bool = 'b' == 'c';
cout << result << "\n";

A saída é 0 para false. Considerar,

resultado bool = 'b' != 'B';
cout << result << "\n";

!= significa não equal, enquanto = significa atribuído e não equivalente. A saída é 0 para false. Considerar,

resultado bool = 'b' != 'b';
cout << result << "\n";

A saída é 1 para verdadeira. Considerar,

resultado bool = 'b' != 'c';
cout << result << "\n";

A saída é 1 para verdadeira.

Então, == e != são operadores de igualdade.

Operadores relacionais

Para caracteres comuns em C ++, em ordem crescente, os números vêm antes das letras maiúsculas, que vêm antes das letras minúsculas.

Então < will return true (1) when the left character is less than the right character. The other relational operators, , >= são explicados da mesma forma.

A string literal como um objeto

A matriz é um ponteiro constante para o início de uma sequência específica de tipo de dados. Da mesma forma, a string é um ponteiro constante para o início de uma sequência de personagens. Compare as seguintes definições:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "mulher";

A primeira matriz é uma variedade de ints e tem cinco elementos. A segunda e a terceira matrizes são matrizes de chars com nomes diferentes, mas o mesmo número de elementos. A segunda e a terceira matrizes são iguais, mas para seus nomes. O conteúdo de texto da segunda matriz é delimitado por aparelhos; Os personagens são separados por vírgulas e cada personagem está em citações únicas. O conteúdo de texto da terceira matriz é delimitado por cotações duplas; Os personagens não são separados por vírgulas e cada personagem não está em citações únicas. A segunda e a terceira matrizes são duas maneiras de produzir uma corda, com a terceira maneira sendo a melhor maneira.

ARR é um ponteiro constante para o primeiro elemento de sua matriz, o que significa que o ARR sempre apontará para o local com o número inteiro, 3 mesmo que o valor de 3 seja alterado. O tamanho da matriz, cinco elementos, não permanece constante. No entanto, cada um dos valores da matriz pode ser alterado.

STR é um ponteiro constante para o primeiro elemento de sua matriz, o que significa que o STR sempre apontará para o local com o personagem, 'W', mesmo que o valor de 'W' seja alterado. O tamanho da matriz de personagens, cinco elementos, não permanece constante. No entanto, cada um dos valores do literal pode ser alterado.

STRI é um ponteiro constante para o primeiro elemento de seu literal (Array), o que significa que o stri sempre apontará para o local com o personagem, mesmo que o valor de W seja alterado. O tamanho da corda literal (matriz), cinco elementos, não permanece realmente constante. No entanto, cada um dos valores do literal pode ser modificado.

O que é constante em uma matriz ou string literal? O endereço de memória do primeiro elemento da matriz ou literal permanece como o valor do nome (identificador) da matriz ou literal, e não pode ser alterado. Bem, o tamanho da matriz ou literal não permanece constante. Cada valor na matriz ou literal pode ser alterado. O código a seguir mostra como o quarto elemento de cada uma das matrizes foi alterado:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "mulher";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

A saída é:

9
mulheres mulheres
mulheres

Observe que os elementos de uma string definida literal, como para a terceira definição acima, podem ser acessados ​​com o índice de matriz (subscrito). A razão da segunda linha da saída é dada abaixo.

Subscrito de definição

Observe que nas definições acima, não há número inteiro para subscrito. Quando o número de elementos não pode ser facilmente determinado, pelo programador, o número inteiro do subscrito deve ser omitido. Seja qual for o caso, o número inteiro não deve ser menor que o número de elementos na matriz.

Para a corda literal, o número inteiro deve ser pelo menos 1 maior que o número de caracteres na string. Isso ocorre porque o caractere nulo (\ 0) é sempre adicionado pelo compilador, no final de uma matriz que é uma string, delimitada por citoções duplas. O caractere nulo não é adicionado no final da segunda matriz acima, porque não é uma string oficial. A terceira matriz é uma corda oficial. O código a seguir mostra os valores mínimos do subscrito.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
Char Stri [6] = "Mulher";

Para fazer a segunda definição uma string oficial, o personagem nulo deve ser adicionado da seguinte maneira:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
Char Stri [6] = "Mulher";

A saída agora deve ser,

9
mulheres
mulheres

sem a segunda "mulher". Observe que o subscrito correspondente para a segunda matriz é 6, e não 5 como era.

Valores literais constantes

Para impedir qualquer personagem nas citações duplas atribuídas a um identificador de ser modificado, posteriormente no programa, precede a definição com a palavra reservada, const, como segue:

const char ident ident [] = "eu te amo";

Operações com literais de string

Operações de igualdade

Os operadores de igualdade são == e != . Quando as variáveis ​​(identificadores) de duas cordas são comparadas, são os ponteiros (endereços) dos literais que acabam sendo comparados; isso esta errado. Para comparar strings, os literais devem ser comparados, como no código a seguir:

bool resultado = "mulher" == "mulher";
cout << result << '\n';

A saída é 1 para verdadeira. A comparação é feita na maneira do dicionário, mas com os números chegando em primeiro lugar em ordem crescente, antes das letras maiúsculas, que vêm antes das letras minúsculas. A saída do código a seguir é 0, para false.

BOOL result = "Mulher" !"mulher";
cout << result << '\n';

Operadores relacionais com literais de cordas

Operadores relacionais não funcionam com literais de cordas.

Literal de cordas cruas

Uma corda crua literal permite que uma string seja exibida como digitada, ignorando sequências de fuga e respeitando as novas linhas. Considere o seguinte código:

char str [] = r "(abc \\ d efg hij
Klmn \ n "'OPQ
rst) ";
cout << str << '\n';

A saída é:

abc \\ d efg hij
Klmn \ n "'OPQ
RST

No código, o literal de string cru começa com r, seguido por ”e ( . Termina com) e “.

C ++ Tipos literais de cordas principais

Caracteres

O tipo de char é do tipo C ++ original e normalmente armazenaria um personagem em 8 bits.

char16_t

Isso armazena um personagem em 16 bits.

char32_t

Isso armazena um personagem em 32 bits.

wchar_t

char16_t e char32_t são caracteres amplos. wchar_t é um amplo caractere que é proprietário e definido por implementação.

Conclusão

Um personagem literal é um único personagem em citações únicas. Uma sequência de fuga é um personagem que também pode estar em citações únicas. Uma string literal é uma sequência de caracteres em duas citações. Uma string literal é uma variedade de caracteres que terminam com \ 0. A igualdade e os operadores relacionais trabalham com literais de caráter. Os operadores de igualdade trabalham com literais de cordas, mas os operadores relacionais não funcionam com literais de cordas. Identificadores de caracteres podem ser usados ​​em comparações, mas os identificadores de string não devem ser usados ​​em comparações. Um literal de cordas cruas permite que uma string seja exibida como digitada, ignorando as sequências de fuga e respeitando as novas linhas.