Formato de cadena C ++

Formato de cadena C ++
Formato de cadena significa poner ciertos caracteres para una cadena en posiciones particulares y un orden particular. Esto también implica la inserción de caracteres en blanco en ciertas posiciones. C ++ 20 es la última versión de C++. Tiene una biblioteca de formato, y G ++, que es uno de los compiladores de C ++ más populares, lo implementa. Sin embargo, la función variádica printf (), incorporada en el lenguaje C ++ del lenguaje C, es similar al propósito de la biblioteca de formato. Una función variádica es una función que puede tomar un número variable de argumentos, en diferentes momentos.

Se puede formatear una cadena, enviarla a la consola o enviarla a un archivo. Este tutorial explica el formato de una cadena, utilizando la función printf (), enviándola al terminal (consola). En C ++, la función printf () se puede usar, mediante la inclusión de la biblioteca.

Contenido del artículo

- Tipos aritméticos

- Naturaleza variádica de printf

- Tipo de cadena

- Whitepace

- Conclusión

Tipos aritméticos

Los tipos aritméticos son enteros y tipos flotantes. Considere el siguiente programa:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("algún texto \ n");
regresar 0;

La salida es:

algún texto

El primer argumento a la función printf () es una cadena literal. El personaje de Newline, "\ n" en la cadena literal, obliga a cualquier cosa que se imprima a su lado para imprimirse en la siguiente línea, incluso si esa cosa está dentro de las quotas dobles. El "\ n" también es un personaje de espacio blanco.

Con la inclusión de "#include" no es realmente necesario.

Entero

Considere las siguientes declaraciones printf ():

printf ("El número es: %i \ n", 52);
printf ("El número es: %d \ n", 52);

La salida es:

El número es: 52
El número es: 52

El %I o %D es un ejemplo de un especificador de formato. %I Dentro del primer argumento de la función printf, que es una cadena literal, significa reemplazarse con el valor entero que es el siguiente argumento de la función printf. %d es sinónimo de %i. El "\ n" siempre desempeñará su papel en el envío de lo que se imprimirá al lado de la siguiente línea en la terminal. Un especificador como %I, escrito junto a \ n, no plantea ningún conflicto de intereses. El segundo argumento a la función printf () puede ser una variable.

Al reemplazarse con el siguiente valor de argumento de la función printf, se dice que el especificador se expande al valor correspondiente. Nota: %I es para un entero, mientras que %F es para un número de flotación.

Ahora, si se inserta un cero entre % y el especificador real, yo, yo.mi., %0i para 1 cero, entonces 52 se emitirán como 52. Si es %02i, para 2 ceros, 52 seguirán siendo generados como 52. Si es %03i, para 3 ceros, 52 se emitirán como 052. Se ha agregado un cero, en la tercera posición, contando desde el extremo derecho del número. Si es %04i, para 4 ceros, 52 se emitirán como, 0052. Se han agregado dos ceros, en la cuarta posición, contando desde el extremo derecho del número.

En este contexto, cero se llama bandera. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("El número es: %0i \ n", 52);
printf ("El número es: %02i \ n", 52);
printf ("El número es: %03i \ n", 52);
printf ("El número es: %04i \ n", 52);
regresar 0;

La salida es:

El número es: 52
El número es: 52
El número es: 052
El número es: 0052

Cero en este contexto se llama bandera. Otra posible bandera es el espacio. El siguiente programa ilustra esto para el espacio:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("El número es: %i \ n", 52);
printf ("El número es: %2i \ n", 52);
printf ("El número es: %3i \ n", 52);
printf ("El número es: %4i \ n", 52);
regresar 0;

La salida es:

El número es: 52
El número es: 52
El número es: 52
El número es: 52

Tenga en cuenta que con la bandera espacial, no se usa ningún carácter en el especificador de formato. Se agrega una bandera frente al número para compensar el número de posiciones solicitadas para el campo de presentación, contando desde la derecha. Si el número de posiciones es menor o igual al número de dígitos, no se agrega ningún indicador.

Ancho de campo

Un campo es el número de caracteres que se pueden mostrar para ese número. Un ancho de campo es el número máximo de caracteres que el programador espera obtener. El número de ancho de campo se inserta justo después del indicador (hacia la derecha) en el especificador de formato. Es lo mismo que el número anterior. Si el número de caracteres que se mostrará es naturalmente mayor que el ancho de campo, la función printf () lo permitirá. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("El número es: %03i \ n", 1);
printf ("El número es: %03i \ n", 12);
printf ("El número es: %03i \ n", 123);
printf ("El número es: %03i \ n", 1234);
printf ("El número es: %03i \ n", 12345);
regresar 0;

La salida es:

El número es: 001
El número es: 012
El número es: 123
El número es: 1234
El número es: 12345

Flotar

Un número de punto flotante es un número con la parte entera y una parte decimal. Tenga en cuenta que la parte entera no se representa como un entero, internamente. El especificador real para el flotador es "f". El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("El número es: %f \ n", 2.53);
regresar 0;

La salida de la computadora del autor es:

El número es: 2.530000

Este número naturalmente tiene 2 decimales. Desafortunadamente, se agregaron 4 lugares decimales de 4 ceros. La verdad es que la computadora del autor redondea el número de decimales a 6. Agregará ceros para compensar 6 decimales si el número natural de decimales es menos. El programador puede decidir el número de decimales. Puede ser menor o igual a 6, o puede ser mayor que 6.

Esta intención necesita otro componente de código, llamado componente de precisión, para el especificador de formato. Consiste en el punto y un número para el número de decimales buscados. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("El número es: %f \ n", 2.53);
printf ("El número es: %.1f \ n ", 2.53);
printf ("El número es: %.2f \ n ", 2.53);
printf ("El número es: %.3f \ n ", 2.53);
printf ("El número es: %.8f \ n ", 2.53);
regresar 0;

La salida es:

El número es: 2.530000
El número es: 2.5
El número es: 2.53
El número es: 2.530
El número es: 2.53000000

Tenga en cuenta que ".0 ”no está en ninguno de los especificadores.

Naturaleza variádica de printf

El primer argumento de la función printf () es una cadena literal. Los especificadores de formato se pueden intercalar dentro de la cadena literal. El primer especificador de formato de la izquierda, en la cadena literal, corresponde al segundo argumento de la función printf (). El segundo especificador de formato de la izquierda, en la cadena literal, corresponde al tercer argumento de la función printf (). El tercer especificador de formato corresponde al cuarto argumento de la función printf () y así sucesivamente. El siguiente programa ilustra esto para los tipos de int y flotación:

#incluir
usando el espacio de nombres STD;
int main ()

int it = 52;
flotante ft = 2.53;
printf ("Los números son, %03i y %03i y %.3f \ n ", 27, it, ft);
regresar 0;

La salida es:

Los números son 027 y 052 y 2.530

Tipo de cadena

El especificador de formato de cadena básica es %s. El siguiente programa muestra su uso:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("%s", "Te amo.\norte");
regresar 0;

La salida es:

Te amo.

El personaje '\ n' es enviar lo que se imprima al lado de la siguiente línea. Todo el primer argumento aquí tiene %s como contenido.

Las diferentes formas posibles de usar números, con el especificador de formato de cadena, son las siguientes:

%NUMS
De %.numeros
%-nums
De %.num1-num2s
%-num1.num2s
%NUMS

Hay 11 personajes en la cadena, "Te amo."El punto es un personaje. Si NUM es inferior a 11, la cadena de salida no se truncará. Si es mayor de 11, los espacios adicionales se acolcharán a la izquierda para hacer que el número total de caracteres en el campo se le da. El siguiente código ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("%7s", "Te amo.\norte");
printf ("%16s", "Te amo.\norte");
regresar 0;

La salida es:

Te amo.
Te amo.
De %.numeros

Aquí, hay un punto frente al número. El punto aquí significa imprimir el número de caracteres del número dado, comenzando desde el primer personaje. Esto significa que si NUM es menor que el número total de caracteres, truncar el equilibrio a la derecha. Si NUM es más, agregue espacios a la derecha de compensar el número dado. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("%.7s "," Te amo.\norte");
printf ("%.16s "," Te amo.\norte");
regresar 0;

La salida es:

Te amo te amo.

Esta salida necesita más explicación. En la cuerda "Te amo.\ n ", hay 12 caracteres. "\ N" es un personaje. Los primeros 7 personajes son "Amo". La primera función printf () del programa imprime esto: "Me encanta", truncando el resto de la cadena literal, incluyendo "\ n". Desde "\ n" del primer "Te amo.\ n ”ha sido retirado, lo que sea que se imprima a continuación, se imprime en esta línea. La segunda función printf () imprime sus 11 caracteres. El duodécimo personaje, que es "\ n", hace que el cursor vaya a la siguiente línea. Entonces, se deben imprimir 4 espacios más.

%-nums

Aquí, hay un guión frente al número. El guión significa, imprima el número de caracteres del número dado, comenzando desde el primer personaje. Además, no trunces si NUM es menor que el número total de caracteres. Simplemente agregue más espacios a la derecha para compensar el número dado. El siguiente programa ilustra esto:

#incluir
usando el espacio de nombres STD;
int main ()

printf ("%-7s", "Te amo.\norte");
printf ("%-16s", "Te amo.\norte");
regresar 0;

La salida es:

Te amo.
Te amo.
cursor

El cursor aparece después de 4 espacios adicionales en la tercera línea.

De %.num1-num2s, %-num1.num2s

La interpretación de estos dos elementos se deja como un ejercicio para el lector.

Whitepace

El "\ n" es un ejemplo de un personaje de espacio blanco. Los personajes de espacios blancos son secuencias de escape. No están impresos. Solo tienen sus efectos individuales. Por ejemplo, "\ n" hace que el cursor vaya a la siguiente línea. En las muestras de código anteriores, este "\ n" se ha empleado dentro del primer argumento de la función printf (), una cadena literal. Todavía se puede emplear como una variable, como muestra el siguiente programa:

#incluir
usando el espacio de nombres STD;
int main ()

char vr = '\ n';
printf ("primera línea%csecond line", VR);
regresar 0;

La salida es:

primera linea
Segundo Linecursor

Los siguientes son blancos y sus significados:

\norte: Agregar una nueva línea

\ t: pestaña horizontal

\ V: pestaña vertical

\F: FUERZO DE FORMA

\ 040: espacio único presionando la tecla de barra espacial

\ r: retorno de carro

Conclusión

El formato de la cadena significa poner ciertos caracteres para una cadena, en posiciones particulares y un orden particular. Esto también implica la inserción de caracteres en blanco en ciertas posiciones. C ++ 20 es la última versión de C++. Tiene una biblioteca de formato. Sin embargo, la mayoría de los compiladores de C ++ aún no han implementado esta biblioteca. Nota, la función variádica printf (), incorporada en el lenguaje C ++ desde el lenguaje C, es similar al propósito de la biblioteca de formato. El primer argumento de esta función es una cadena literal. Los especificadores de formato se intercalan dentro de. El resto de los argumentos a la función printf () corresponden a estos especificadores en orden.