Formatação de string c ++

Formatação de string c ++
Formatação de string significa colocar certos caracteres para uma string em posições específicas e uma ordem específica. Isso também envolve a inserção de caracteres de espaço em branco em determinadas posições. C ++ 20 é a versão mais recente de C++. Possui uma biblioteca de formato e G ++, que é um dos compiladores C ++ mais populares, implementa -o. No entanto, a função variadica printf (), incorporada na linguagem C ++ da linguagem C, é semelhante ao objetivo da biblioteca de formatos. Uma função variadica é uma função que pode levar um número variável de argumentos, em momentos diferentes.

Uma string pode ser formatada, enviando -a para o console ou enviando -a para um arquivo. Este tutorial explica a formatação de uma string, usando a função printf (), enviando -a para o terminal (console). Em C ++, a função printf () pode ser usada, através da inclusão da biblioteca.

Conteúdo do artigo

- Tipos aritméticos

- Natureza variádica do printf

- Tipo de string

- Espaço em branco

- Conclusão

Tipos aritméticos

Os tipos aritméticos são inteiros e os tipos flutuantes. Considere o seguinte programa:

#incluir
usando namespace std;
int main ()

printf ("Alguns texto \ n");
retornar 0;

A saída é:

algum texto

O primeiro argumento para a função printf () é uma string literal. O personagem de nova linha, "\ n" na literal da corda, força qualquer coisa a ser impressa a ser impressa na próxima linha, mesmo que essa coisa esteja dentro das citações duplas. O "\ n" também é um personagem de espaço em branco.

Com a inclusão de, "#include" não é realmente necessário.

Inteiro

Considere as seguintes declarações printf ():

printf ("Número é: %i \ n", 52);
printf ("Número é: %d \ n", 52);

A saída é:

O número é: 52
O número é: 52

O %i ou %d é um exemplo de especificador de formato. %i dentro do primeiro argumento da função printf, que é um literal de string, significa substituir -se pelo valor inteiro que é o próximo argumento da função printf. %d é um sinônimo de %i. O "\ n" sempre desempenhará seu papel no envio do que deve ser impresso ao lado da próxima linha no terminal. Um especificador como %i, digitado ao lado de \ n, não representa conflito de interesses. O segundo argumento para a função printf () pode ser uma variável.

Ao se substituir pelo próximo valor de argumento da função Printf, diz -se que o especificador foi expandido para o valor correspondente. Nota: %I é para um número inteiro, enquanto %f é para um número de flutuação.

Agora, se um zero é inserido entre % e o especificador real, eu, eu.e., %0i para 1 zero, então 52 será emitido como 52. Se for %02i, para 2 zeros, 52 ainda serão produzidos como 52. Se for %03i, para 3 zeros, 52 serão produzidos como 052. Um zero foi adicionado, na terceira posição, contando da extremidade direita do número. Se for %04i, para 4 zeros, 52 serão produzidos como, 0052. Dois zeros foram adicionados, na quarta posição, contando da extremidade direita do número.

Nesse contexto, zero é chamado de bandeira. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("Número é: %0i \ n", 52);
printf ("Número é: %02i \ n", 52);
printf ("Número é: %03i \ n", 52);
printf ("Número é: %04i \ n", 52);
retornar 0;

A saída é:

O número é: 52
O número é: 52
O número é: 052
O número é: 0052

Zero neste contexto é chamado de bandeira. Outra bandeira possível é o espaço. O programa a seguir ilustra isso para o espaço:

#incluir
usando namespace std;
int main ()

printf ("Número é: %i \ n", 52);
printf ("Número é: %2i \ n", 52);
printf ("Número é: %3i \ n", 52);
printf ("Número é: %4i \ n", 52);
retornar 0;

A saída é:

O número é: 52
O número é: 52
O número é: 52
O número é: 52

Observe que, com a bandeira do espaço, nenhum personagem é usado no especificador de formato. Uma bandeira é adicionada na frente do número para compensar o número de posições solicitadas para o campo de apresentação, contando da direita. Se o número de posições for menor ou igual ao número de dígitos, nenhuma bandeira será adicionada.

Largura do campo

Um campo é o número de caracteres que podem ser exibidos para esse número. Uma largura de campo é o número máximo de caracteres que o programador espera obter. O número da largura do campo é inserido logo após a bandeira (à direita) no especificador de formato. É o mesmo que o número anterior. Se o número de caracteres a serem exibidos for naturalmente maior que a largura do campo, a função printf () permitirá. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("Número é: %03i \ n", 1);
printf ("Número é: %03i \ n", 12);
printf ("Número é: %03i \ n", 123);
printf ("Número é: %03i \ n", 1234);
printf ("Número é: %03i \ n", 12345);
retornar 0;

A saída é:

O número é: 001
O número é: 012
O número é: 123
O número é: 1234
O número é: 12345

Flutuador

Um número de ponto flutuante é um número com a parte inteira e uma parte decimal. Observe que a parte inteira não é representada como um número inteiro, internamente. O especificador real para o flutuador é "f". O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("Número é: %f \ n", 2.53);
retornar 0;

A saída para o computador do autor é:

O número é: 2.530000

Este número naturalmente tem 2 lugares decimais. Infelizmente, 4 lugares decimais de 4 zeros foram anexados. A verdade é que o computador do autor arredonda o número de lugares decimais para 6. Ele anexará Zeros para compensar 6 lugares decimais se o número natural de lugares decimais for menos. O número de lugares decimais pode ser decidido pelo programador. Pode ser menor ou igual a 6, ou pode ser maior que 6.

Esta intenção precisa de outro componente de código, chamado de componente de precisão, para o especificador de formato. Consiste no ponto e um número para o número de lugares decimais procurados. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("Número é: %f \ n", 2.53);
printf ("Número é: %.1f \ n ", 2.53);
printf ("Número é: %.2f \ n ", 2.53);
printf ("Número é: %.3f \ n ", 2.53);
printf ("Número é: %.8f \ n ", 2.53);
retornar 0;

A saída é:

O número é: 2.530000
O número é: 2.5
O número é: 2.53
O número é: 2.530
O número é: 2.53000000

Observe que ".0 ”não está em nenhum dos especificadores.

Natureza variádica do printf

O primeiro argumento da função printf () é uma string literal. Especificadores de formato podem ser intercalados dentro da string literal. O primeiro especificador de formato da esquerda, na string literal, corresponde ao segundo argumento da função printf (). O segundo especificador de formato da esquerda, na string literal, corresponde ao terceiro argumento da função printf (). O terceiro especificador de formato corresponde ao quarto argumento da função printf () e assim por diante. O programa a seguir ilustra isso para os tipos de int e flutuação:

#incluir
usando namespace std;
int main ()

int it = 52;
float ft = 2.53;
printf ("Os números são, %03i e %03i e %.3f \ n ", 27, it, ft);
retornar 0;

A saída é:

Os números são 027 e 052 e 2.530

Tipo de string

O especificador básico de formato de string é %s. O programa a seguir mostra seu uso:

#incluir
usando namespace std;
int main ()

printf ("%s", "eu te amo.\ n ");
retornar 0;

A saída é:

Eu te amo.

O personagem '\ n' é enviar o que for impresso ao lado da próxima linha. Todo o primeiro argumento aqui tem %s como conteúdo.

As diferentes maneiras possíveis de usar números, com o especificador de formato de string, são as seguintes:

%nums
%.Nums
%-NUMS
%.Num1-Num2s
%-NUM1.Num2s
%nums

Existem 11 caracteres na corda, “Eu te amo.”O ponto é um personagem. Se Num for menor que 11, a sequência de saída não será truncada. Se for maior que 11, espaços extras serão acolchoados à esquerda para tornar o número total de caracteres no campo o número dado. O código a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("%7s", "eu te amo.\ n ");
printf ("%16s", "eu te amo.\ n ");
retornar 0;

A saída é:

Eu te amo.
Eu te amo.
%.Nums

Aqui, há um ponto na frente do número. O ponto aqui significa imprimir o número de caracteres do número fornecido, começando do primeiro caractere. Isso significa que, se o número for menor que o número total de caracteres, truque o equilíbrio à direita. Se num for mais, adicione espaços à direita para compensar o número fornecido. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("%.7s "," eu te amo.\ n ");
printf ("%.16s "," eu te amo.\ n ");
retornar 0;

A saída é:

Eu amo eu te amo.

Esta saída precisa de mais explicações. Na string “Eu te amo.\ n ”, existem 12 caracteres. "\ N" é um personagem. Os 7 primeiros personagens são "eu amo". A função PRIMPRF () do programa imprime a seguinte: "Eu amo", truncando o resto da string literal, incluindo "\ n". Desde "\ n" do primeiro "eu te amo.\ n ”foi retirado, o que quer que seja impresso em seguida, é impresso nesta linha. A função Printf () imprime seus 11 caracteres. O décimo segundo personagem, que é "\ n", faz com que o cursor vá para a próxima linha. Então, mais 4 espaços devem ser impressos em seguida.

%-NUMS

Aqui, há um hífen na frente do número. O hífen significa, imprima o número de caracteres do número fornecido, começando do primeiro caractere. Além disso, não trunce se o num for menor que o número total de caracteres. Basta adicionar mais espaços à direita para compensar o número fornecido. O programa a seguir ilustra o seguinte:

#incluir
usando namespace std;
int main ()

printf ("%-7s", "eu te amo.\ n ");
printf ("%-16s", "eu te amo.\ n ");
retornar 0;

A saída é:

Eu te amo.
Eu te amo.
cursor

O cursor aparece após 4 espaços extras na terceira linha.

%.Num1-Num2s, %-num1.Num2s

A interpretação desses dois itens é deixada como um exercício para o leitor.

Espaço em branco

O "\ n" é um exemplo de um personagem de espaço em branco. Os caracteres de espaço em branco são sequências de fuga. Eles não são impressos. Eles apenas têm seus efeitos individuais. Por exemplo, "\ n" faz com que o cursor vá para a seguinte linha. Nas amostras de código anteriores, esta “\ n” foi empregada dentro do primeiro argumento da função printf (), uma string literal. Ainda pode ser empregado como uma variável, como mostra o seguinte programa:

#incluir
usando namespace std;
int main ()

char vr = '\ n';
printf ("Primeira linha%csegund line", VR);
retornar 0;

A saída é:

primeira linha
Segundo Linecursor

Os seguintes são os espaços em branco e seus significados:

\ n: Adicione uma nova linha

\ t: Guia horizontal

\ V: Guia Vertical

\ f: FORMULAÇÃO DE FORMA

\ 040: Espaço único pressionando a tecla da barra de espaço

\ r: Retorno do carro

Conclusão

Formatação de string significa colocar certos caracteres para uma string, em posições particulares e ordem particular. Isso também envolve a inserção de caracteres de espaço em branco em determinadas posições. C ++ 20 é a versão mais recente de C++. Tem uma biblioteca de formato. No entanto, a maioria dos compiladores C ++ ainda não implementou esta biblioteca. Observe que a função Printf () Variadic, incorporada na linguagem C ++ da linguagem C, é semelhante ao objetivo da biblioteca de formatos. O primeiro argumento para esta função é uma string literal. Os especificadores de formato são intercalados dentro. O restante dos argumentos para a função printf () corresponde a esses especificadores em ordem.