C ++ strengformatering

C ++ strengformatering
Strengformatering betyr å legge visse tegn for en streng i bestemte posisjoner og en bestemt ordre. Dette innebærer også innsetting av hvitromstegn i visse posisjoner. C ++ 20 er den siste versjonen av C++. Den har et formatbibliotek, og G ++, som er en av de mest populære C ++ kompilatorene, implementerer det. Imidlertid er den variadiske funksjonen Printf (), integrert i C ++ -språket fra C -språket, lik formålet med formatbiblioteket. En variadisk funksjon er en funksjon som kan ta et variabelt antall argumenter, til forskjellige tider.

En streng kan formateres, sende den ut til konsollen eller sende den til en fil. Denne opplæringen forklarer formateringen av en streng, ved hjelp av printf () -funksjonen, sender den ut til terminalen (konsoll). I C ++ kan printf () -funksjonen brukes, gjennom inkludering av biblioteket.

Artikkelinnhold

- Aritmetiske typer

- Variadisk natur av Printf

- Strengtype

- Whitespace

- Konklusjon

Aritmetiske typer

Aritmetiske typer er heltall og flytende typer. Tenk på følgende program:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("noen tekst \ n");
retur 0;

Utgangen er:

Noe tekst

Det første argumentet til printf () -funksjonen er en streng bokstavelig. Newline-tegnet, “\ n” i strengen bokstavelig, tvinger alt som skal skrives ut ved siden av å bli skrevet ut på neste linje, selv om den tingen er innenfor dobbeltkvotene. “\ N” er også en hvitromskarakter.

Med inkludering av, er "#include" egentlig nødvendig.

Heltall

Tenk på følgende PRINTF () uttalelser:

printf ("tall er: %i \ n", 52);
printf ("tall er: %d \ n", 52);

Utgangen er:

Antall er: 52
Antall er: 52

%I eller %D er et eksempel på en formatspesifikasjon. %i Innenfor det første argumentet for Printf -funksjonen, som er en streng bokstavelig, betyr erstatning med seg selv med heltallverdien som er neste argument for printf -funksjonen. %d er et synonym til %i. “\ N” vil alltid spille sin rolle i å sende det som skal skrives ut ved siden av neste linje på terminalen. En spesifikasjon som %i, skrevet ved siden av \ n, utgjør ingen interessekonflikt. Det andre argumentet til printf () -funksjonen kan være en variabel.

Ved å erstatte seg selv med neste argumentverdi for Printf -funksjonen, sies spesifikasjonen å bli utvidet til den tilsvarende verdien. Merk: %I er for et heltall, mens %f er for et flottørnummer.

Nå, hvis en null settes inn mellom % og den faktiske spesifikasjonen, i, i.e., %0i for 1 null, deretter vil 52 bli utsatt for 52. Hvis det er %02i, for 2 nuller, vil 52 fortsatt bli utført som 52. Hvis det er %03i, for 3 nuller, vil 52 bli utsendt som 052. Én null er lagt til, i den tredje posisjonen, og teller fra høyre ende av tallet. Hvis det er %04i, for 4 nuller, vil 52 bli utsendt som, 0052. To nuller er lagt til, i fjerde plassering, og teller fra høyre ende av nummeret.

I denne sammenhengen kalles null et flagg. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("tall er: %0i \ n", 52);
printf ("tall er: %02i \ n", 52);
printf ("tall er: %03i \ n", 52);
printf ("tall er: %04i \ n", 52);
retur 0;

Utgangen er:

Antall er: 52
Antall er: 52
Nummer er: 052
Antall er: 0052

Null i denne sammenhengen kalles et flagg. Et annet mulig flagg er plassen. Følgende program illustrerer dette for plassen:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("tall er: %i \ n", 52);
printf ("tall er: %2i \ n", 52);
printf ("tall er: %3i \ n", 52);
printf ("tall er: %4i \ n", 52);
retur 0;

Utgangen er:

Antall er: 52
Antall er: 52
Antall er: 52
Antall er: 52

Merk at med romflagget brukes ingen karakterer i formatets spesifikasjon. Et flagg legges foran nummeret for å utgjøre antall stillinger som er bedt om for presentasjonsfeltet, og teller fra høyre. Hvis antall posisjoner er mindre enn eller lik antall sifre, legges det ikke noe flagg til.

Feltbredde

Et felt er antall tegn som kan vises for det nummeret. En feltbredde er det maksimale antall tegn som programmereren håper å få. Feltbreddenummeret settes inn like etter flagget (høyre) i formatspesifikatoren. Det er det samme som forrige nummer. Hvis antall tegn som skal vises er naturlig større enn feltbredden, vil printf () -funksjonen tillate den. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("tall er: %03i \ n", 1);
printf ("tall er: %03i \ n", 12);
printf ("tall er: %03i \ n", 123);
printf ("tall er: %03i \ n", 1234);
printf ("tall er: %03i \ n", 12345);
retur 0;

Utgangen er:

Antall er: 001
Nummer er: 012
Antall er: 123
Antall er: 1234
Antall er: 12345

Flyte

Et flytende punktnummer er et tall med heltalldelen og en desimal del. Merk at heltalldelen ikke er representert som et heltall, internt. Den faktiske spesifikasjonen for flottøren er ”F”. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("tall er: %f \ n", 2.53);
retur 0;

Utgangen for forfatterens datamaskin er:

Antall er: 2.530000

Dette tallet har naturlig to desimaler. Dessverre ble 4 desimaler på 4 nuller vedlagt. Sannheten er at forfatterens datamaskin runder antall desimaler til 6. Det vil legge nuller til å gjøre opp for 6 desimaler hvis det naturlige antallet desimaler er mindre. Antall desimaler kan avgjøres av programmereren. Det kan være mindre enn eller lik 6, eller det kan være større enn 6.

Denne intensjonen trenger en annen kodekomponent, kalt presisjonskomponenten, for formatspesifikasjonen. Den består av prikken og et antall for antall desimaler ønsket. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("tall er: %f \ n", 2.53);
printf ("tall er: %.1f \ n ", 2.53);
printf ("tall er: %.2f \ n ", 2.53);
printf ("tall er: %.3f \ n ", 2.53);
printf ("tall er: %.8f \ n ", 2.53);
retur 0;

Utgangen er:

Antall er: 2.530000
Antall er: 2.5
Antall er: 2.53
Antall er: 2.530
Antall er: 2.53000000

Noter det ".0 ”er ikke i noen av spesifikasjonene.

Variadisk natur av Printf

Det første argumentet for printf () -funksjonen er en streng bokstavelig. Formatspesifikasjoner kan ispedes i strengen bokstavelig. Den første formatspesifikasjonen fra venstre, i strengen bokstavelig, tilsvarer det andre argumentet til printf () -funksjonen. Den andre formatspesifikasjonen fra venstre, i strengen bokstavelig, tilsvarer det tredje argumentet til printf () -funksjonen. Den tredje formatspesifikasjonen tilsvarer det fjerde argumentet for printf () -funksjonen og så videre. Følgende program illustrerer dette for Int- og Float -typene:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int it = 52;
flyte ft = 2.53;
printf ("tall er, %03i og %03i og %.3f \ n ", 27, it, ft);
retur 0;

Utgangen er:

Tall er 027 og 052 og 2.530

Strengtype

Basic String Format Specifier er %S. Følgende program viser bruken:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("%s", "jeg elsker deg.\ n ");
retur 0;

Utgangen er:

Jeg elsker deg.

'\ N' karakteren er å sende det som er trykt ved siden av neste linje. Alt det første argumentet her har %S som innhold.

De forskjellige mulige måtene å bruke tall, med spesifikatoren for strengformat, er som følger:

%nums
%.Numre
%-nums
%.num1-num2s
%-num1.num2s
%nums

Det er 11 tegn i strengen, “Jeg elsker deg.”Dot er en karakter. Hvis NUM er mindre enn 11, vil ikke utgangsstrengen bli avkortet. Hvis det er større enn 11, vil ekstra mellomrom bli polstret til venstre for å gjøre det totale antallet tegn i feltet til tallet som er gitt. Følgende kode illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("%7s", "Jeg elsker deg.\ n ");
printf ("%16S", "Jeg elsker deg.\ n ");
retur 0;

Utgangen er:

Jeg elsker deg.
Jeg elsker deg.
%.Numre

Her er det en prikk foran nummeret. Prikken her betyr å skrive ut antall tegn på det gitte nummeret, som begynner fra det første tegnet. Dette betyr at hvis NUM er mindre enn det totale antallet tegn, avkort balansen til høyre. Hvis NUM er mer, legg til mellomrom til høyre for å gjøre opp for det gitte nummeret. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("%.7s "," Jeg elsker deg.\ n ");
printf ("%.16S "," Jeg elsker deg.\ n ");
retur 0;

Utgangen er:

Jeg elsker jeg elsker deg.

Denne utgangen trenger ytterligere forklaring. I strengen “Jeg elsker deg.\ n ”, det er 12 tegn. “\ N” er en karakter. De første 7 karakterene er "Jeg elsker". Programmets første printf () -funksjon skriver ut dette: “Jeg elsker”, og avkortet resten av strengen bokstavelig, inkludert “\ n”. Siden “\ n” av den første “Jeg elsker deg.\ n ”er tatt av, hva som må skrives ut neste, skrives ut på denne linjen. Den andre printf () -funksjonen skriver ut sine 11 tegn. Den tolvte karakteren, som er "\ n", får markøren til å gå til neste linje. Deretter skal 4 flere mellomrom skrives ut neste.

%-nums

Her er det bindestrek foran nummeret. Bindestrek betyr, skriv ut antall tegn på det gitte nummeret, fra første karakter. I tillegg, ikke avkort hvis NUM er mindre enn det totale antallet tegn. Bare legg til flere mellomrom til høyre for å gjøre opp for det gitte nummeret. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

printf ("%-7s", "Jeg elsker deg.\ n ");
printf ("%-16s", "Jeg elsker deg.\ n ");
retur 0;

Utgangen er:

Jeg elsker deg.
Jeg elsker deg.
markør

Markøren vises etter 4 ekstra mellomrom i den tredje linjen.

%.num1-num2s, %-num1.num2s

Tolkningen av disse to varene er igjen som en øvelse for leseren.

Whitespace

“\ N” er et eksempel på en hvitromskarakter. Whitespace -tegn er rømningssekvenser. De er ikke trykt. De har bare sine individuelle effekter. For eksempel får “\ n” markøren til å gå til følgende linje. I de forrige kodeprøvene har denne "\ n" blitt brukt i det første argumentet for printf () -funksjonen, en streng bokstavelig. Det kan fremdeles brukes som en variabel, som følgende program viser:

#inkludere
ved hjelp av navneområdet STD;
int main ()

char vr = '\ n';
Printf ("First Line%Csecond Line", VR);
retur 0;

Utgangen er:

første linje
Andre linecursor

Følgende er hvitespasninger og deres betydninger:

\ n: Legg til en ny linje

\ T: Horisontal fane

\ V: vertikal fane

\ f: form feed

\ 040: enkelt plass ved å trykke på romfeltetasten

\ r: vognretur

Konklusjon

Strengformatering betyr å legge visse tegn for en streng, spesielt posisjoner og spesiell ordre. Dette innebærer også innsetting av hvitromstegn i visse posisjoner. C ++ 20 er den siste versjonen av C++. Det har et formatbibliotek. Imidlertid har de fleste C ++ kompilatorer ennå ikke implementert dette biblioteket. Merk, Printf () variadisk funksjon, integrert i C ++ -språket fra C -språket, ligner på formålet med formatbiblioteket. Det første argumentet til denne funksjonen er en streng bokstavelig. Formatspesifikasjonene er ispedd innenfor. Resten av argumentene til printf () -funksjonen tilsvarer disse spesifikasjonene i orden.