Formattazione della stringa C ++

Formattazione della stringa C ++
La formattazione della stringa significa mettere determinati caratteri per una stringa in posizioni particolari e un ordine particolare. Ciò comporta anche l'inserimento di personaggi di spazi bianchi in determinate posizioni. C ++ 20 è l'ultima versione di C++. Ha una libreria di formato e G ++, che è uno dei compilatori C ++ più popolari, lo implementa. Tuttavia, la funzione variadica printf (), incorporata nella lingua C ++ dalla lingua C, è simile allo scopo della libreria di formato. Una funzione variadica è una funzione che può assumere un numero variabile di argomenti, in momenti diversi.

Una stringa può essere formattata, inviandola alla console o inviandola a un file. Questo tutorial spiega la formattazione di una stringa, usando la funzione printf (), inviandola al terminale (console). In C ++, la funzione printf () può essere utilizzata, attraverso l'inclusione della libreria.

Contenuto dell'articolo

- Tipi aritmetici

- Natura variadica della stampa

- Tipo di stringa

- Spazi bianchi

- Conclusione

Tipi aritmetici

I tipi aritmetici sono interi e tipi galleggianti. Considera il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("alcuni testo \ n");
restituzione 0;

L'output è:

un po 'di testo

Il primo argomento alla funzione printf () è una stringa letterale. Il carattere di Newline, "\ n" nella stringa letterale, costringe qualsiasi cosa da stampare accanto per essere stampato sulla riga successiva, anche se quella cosa è all'interno delle doppie quote. Il "\ n" è anche un personaggio di spazi bianchi.

Con l'inclusione di "#include" non è davvero necessario.

Numero intero

Considera le seguenti dichiarazioni printf ():

printf ("Il numero è: %i \ n", 52);
printf ("Il numero è: %d \ n", 52);

L'output è:

Il numero è: 52
Il numero è: 52

Il %i o %d è un esempio di specificatore di formato. %I all'interno del primo argomento della funzione printf, che è una stringa letterale, significa sostituire se stessa con il valore intero che è il prossimo argomento della funzione printf. %d è sinonimo di %i. Il "\ n" svolgerà sempre il suo ruolo nell'invio di ciò che deve essere stampato accanto alla riga successiva al terminale. Un specificatore come %I, digitato accanto a \ n, non pone alcun conflitto di interessi. Il secondo argomento alla funzione printf () può essere una variabile.

Sostituendo se stesso con il prossimo valore argomento della funzione printf, si dice che lo specificatore sia ampliato al valore corrispondente. Nota: %I è per un numero intero, mentre %F è per un numero di galleggiante.

Ora, se uno zero viene inserito tra % e specificatore effettivo, i, i.e., %0i per 1 zero, quindi 52 verranno eliminati come 52. Se è %02i, per 2 zeri, 52 verranno comunque emessi come 52. Se è %03i, per 3 zeri, 52 verranno eliminati come 052. Uno zero è stato aggiunto, in terza posizione, contando dall'estremità destra del numero. Se è %04i, per 4 zeri, 52 verranno eliminati come 0052. Sono stati aggiunti due zeri, in quarta posizione, contando dall'estremità destra del numero.

In questo contesto, zero è chiamato bandiera. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("Il numero è: %0i \ n", 52);
printf ("Il numero è: %02i \ n", 52);
printf ("Il numero è: %03i \ n", 52);
printf ("Il numero è: %04i \ n", 52);
restituzione 0;

L'output è:

Il numero è: 52
Il numero è: 52
Il numero è: 052
Il numero è: 0052

Zero in questo contesto si chiama bandiera. Un'altra possibile bandiera è lo spazio. Il seguente programma lo illustra per lo spazio:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("Il numero è: %i \ n", 52);
printf ("Il numero è: %2i \ n", 52);
printf ("Il numero è: %3i \ n", 52);
printf ("Il numero è: %4i \ n", 52);
restituzione 0;

L'output è:

Il numero è: 52
Il numero è: 52
Il numero è: 52
Il numero è: 52

Si noti che con la bandiera dello spazio, non viene utilizzato alcun carattere nel formato specificatore. Un flag viene aggiunto davanti al numero per costituire il numero di posizioni richieste per il campo di presentazione, contando da destra. Se il numero di posizioni è inferiore o uguale al numero di cifre, non viene aggiunta alcun flag.

Larghezza del campo

Un campo è il numero di caratteri che possono essere visualizzati per quel numero. Una larghezza del campo è il numero massimo di caratteri che il programmatore spera di ottenere. Il numero di larghezza del campo viene inserito subito dopo il flag (verso destra) nel formato specificatore. È lo stesso del numero precedente. Se il numero di caratteri da visualizzare è naturalmente maggiore della larghezza del campo, la funzione printf () gli consentirà. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("Il numero è: %03i \ n", 1);
printf ("Il numero è: %03i \ n", 12);
printf ("Il numero è: %03i \ n", 123);
printf ("Il numero è: %03i \ n", 1234);
printf ("Il numero è: %03i \ n", 12345);
restituzione 0;

L'output è:

Il numero è: 001
Il numero è: 012
Il numero è: 123
Il numero è: 1234
Il numero è: 12345

Galleggiante

Un numero di punto galleggiante è un numero con la parte intera e una parte decimale. Nota, la parte intera non è rappresentata come un numero intero, internamente. L'effettivo specificatore per il galleggiante è "F". Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("Il numero è: %f \ n", 2.53);
restituzione 0;

L'output per il computer dell'autore è:

Il numero è: 2.530000

Questo numero ha naturalmente 2 posti decimali. Sfortunatamente, sono stati aggiunti 4 luoghi decimali di 4 zeri. La verità è che il computer dell'autore arrotonda il numero di posti decimali a 6. Aprirà gli zeri per compensare 6 posti decimali se il numero naturale di luoghi decimali è inferiore. Il programmatore può essere deciso il numero di luoghi decimali. Può essere inferiore o uguale a 6, oppure può essere maggiore di 6.

Questa intenzione necessita di un altro componente di codice, chiamato componente di precisione, per il specificatore del formato. È costituito dal punto e un numero per il numero di luoghi decimali desiderati. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("Il numero è: %f \ n", 2.53);
printf ("Il numero è: %.1f \ n ", 2.53);
printf ("Il numero è: %.2f \ n ", 2.53);
printf ("Il numero è: %.3f \ n ", 2.53);
printf ("Il numero è: %.8f \ n ", 2.53);
restituzione 0;

L'output è:

Il numero è: 2.530000
Il numero è: 2.5
Il numero è: 2.53
Il numero è: 2.530
Il numero è: 2.53000000

Notare che ".0 "non è in nessuno degli specificatori.

Natura variadica della stampa

Il primo argomento della funzione printf () è una stringa letterale. Gli specificatori di formato possono essere intervallati all'interno della stringa letterale. Il primo specificatore di formato da sinistra, nella stringa letterale, corrisponde al secondo argomento della funzione printf (). Il secondo specificatore di formato da sinistra, nella stringa letterale, corrisponde al terzo argomento della funzione printf (). Il terzo specificatore del formato corrisponde al quarto argomento della funzione printf () e così via. Il seguente programma lo illustra per i tipi INT e Float:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

int it = 52;
float ft = 2.53;
printf ("I numeri sono, %03i e %03i e %.3f \ n ", 27, it, ft);
restituzione 0;

L'output è:

I numeri sono 027 e 052 e 2.530

Tipo di stringa

Lo specificatore del formato stringa di base è %s. Il seguente programma mostra il suo uso:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("%s", "ti amo.\N");
restituzione 0;

L'output è:

Ti amo.

Il personaggio '\ n' è inviare tutto ciò che viene stampato accanto alla riga successiva. Tutto il primo argomento qui ha %s come contenuto.

I diversi modi possibili di utilizzare i numeri, con il formato stringa, sono i seguenti:

%nums
%.nums
%-num
%.Num1-Num2s
%-num1.num2s
%nums

Ci sono 11 caratteri nella stringa, “Ti amo."Il punto è un personaggio. Se NUM è inferiore a 11, la stringa di output non verrà troncata. Se è maggiore di 11, gli spazi extra verranno imbottiti a sinistra per realizzare il numero totale di caratteri nel campo il numero indicato. Il seguente codice illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("%7s", "Ti amo.\N");
printf ("%16s", "Ti amo.\N");
restituzione 0;

L'output è:

Ti amo.
Ti amo.
%.nums

Qui, c'è un punto davanti al numero. Il punto qui significa stampare il numero di caratteri del numero dato, a partire dal primo carattere. Ciò significa che se NUM è inferiore al numero totale di caratteri, tronca l'equilibrio a destra. Se NUM è di più, aggiungi spazi a destra per compensare il numero dato. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("%.7s "," Ti amo.\N");
printf ("%.16s "," Ti amo.\N");
restituzione 0;

L'output è:

Ti amo ti amo.

Questo output necessita di ulteriori spiegazioni. Nella stringa “Ti amo.\ n ", ci sono 12 caratteri. "\ N" è un personaggio. I primi 7 personaggi sono "I Love". La funzione Printf () del programma printf () stampa questo: "I love", troncando il resto della stringa letterale, tra cui "\ n". Da quando "\ n" del primo "Ti amo.\ n "è stato tolto, tutto ciò che deve essere stampato in seguito, è stampato su questa linea. La seconda funzione printf () stampa i suoi 11 caratteri. Il dodicesimo personaggio, che è "\ n", fa sì che il cursore vada alla riga successiva. Quindi, altri 4 spazi dovrebbero essere stampati successivamente.

%-num

Qui, c'è un trattino davanti al numero. Il trattino significa, stampare il numero di caratteri del numero dato, a partire dal primo carattere. Inoltre, non troncare se NUM è inferiore al numero totale di caratteri. Aggiungi semplicemente più spazi sulla destra per compensare il numero dato. Il seguente programma illustra questo:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

printf ("%-7s", "Ti amo.\N");
printf ("%-16s", "Ti amo.\N");
restituzione 0;

L'output è:

Ti amo.
Ti amo.
cursore

Il cursore appare dopo 4 spazi extra nella terza riga.

%.num1-num2s, %-num1.num2s

L'interpretazione di questi due elementi viene lasciata come un esercizio per il lettore.

Spazi bianchi

Il "\ n" è un esempio di personaggio di spazi bianchi. I caratteri di spazi bianchi sono sequenze di fuga. Non sono stampati. Hanno solo i loro effetti individuali. Ad esempio, "\ n" fa sì che il cursore vada alla riga seguente. Nei campioni di codice precedente, questo "\ n" è stato impiegato all'interno del primo argomento della funzione printf (), una stringa letterale. Può ancora essere impiegato come variabile, come mostra il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

char vr = '\ n';
printf ("prima riga%csecond line", VR);
restituzione 0;

L'output è:

prima linea
Secondo linecursor

I seguenti sono spazi bianchi e i loro significati:

\N: Aggiungi una nuova linea

\T: Scheda orizzontale

\ V: Scheda verticale

\F: forma di forma

\ 040: Spazio singolo premendo il tasto della barra dello spazio

\R: Ritorno a carrello

Conclusione

La formattazione della stringa significa mettere determinati caratteri per una stringa, in particolari posizioni e un ordine particolare. Ciò comporta anche l'inserimento di personaggi di spazi bianchi in determinate posizioni. C ++ 20 è l'ultima versione di C++. Ha una libreria di formato. Tuttavia, la maggior parte dei compilatori C ++ non ha ancora implementato questa libreria. Nota, la funzione variadica printf (), incorporata nella lingua C ++ dalla lingua C, è simile allo scopo della libreria di formato. Il primo argomento a questa funzione è una stringa letterale. Gli specificatori del formato sono intervallati all'interno. Il resto degli argomenti alla funzione printf () corrisponde a questi specificatori in ordine.