Formatowanie ciągów C ++

Formatowanie ciągów C ++
Formatowanie ciągów oznacza umieszczanie niektórych znaków dla sznurka w poszczególnych pozycjach i określonej kolejności. Obejmuje to również wstawienie znaków białych w niektórych pozycjach. C ++ 20 to najnowsza wersja C++. Ma bibliotekę formatową i G ++, która jest jednym z najpopularniejszych kompilatorów C ++, wdraża ją. Jednak funkcja Variatyczna printf (), włączona do języka C ++ z języka C, jest podobna do celu biblioteki formatu. Funkcja zmienna jest funkcją, która może przyjmować zmienną liczbę argumentów, w różnych momentach.

String można sformatować, wysyłać go do konsoli lub wysyłając go do pliku. Ten samouczek wyjaśnia formatowanie ciągu, używając funkcji printf (), wysyłając ją do terminala (konsolę). W C ++ można użyć funkcji printf () poprzez włączenie biblioteki.

Treść artykułu

- Typy arytmetyczne

- Wariadyczny charakter printf

- Typ ciągu

- Biała przestrzeń

- Wniosek

Typy arytmetyczne

Typy arytmetyczne to typy liczb całkowitych i pływających. Rozważ następujący program:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („jakiś tekst \ n”);
powrót 0;

Wyjście to:

jakiś tekst

Pierwszym argumentem funkcji printf () jest literał ciąg. Nowa postać, „\ n” w literale, wymusza wszystko, co można wydrukować obok wydrukowania na następnym wierszu, nawet jeśli to jest w podwójnych cytatach. „\ N” jest również postacią białej.

Z włączeniem „#include” nie jest tak naprawdę konieczne.

Liczba całkowita

Rozważ następujące instrukcje printf ():

printf („liczba to: %i \ n”, 52);
printf („liczba to: %d \ n”, 52);

Wyjście to:

Liczba to: 52
Liczba to: 52

%I lub %D jest przykładem specyfikatora formatu. %I w ramach pierwszego argumentu funkcji PrintF, która jest literałem ciągłym, oznacza zastąpienie się wartości całkowitej, która jest następnym argumentem funkcji PrintF. %D jest synonimem %i. „\ N” zawsze odgrywa swoją rolę w wysyłaniu tego, co ma zostać wydrukowane obok następnego wiersza na terminalu. Specyfikator taki jak %I, wpisany obok \ n, nie stanowi konfliktu interesów. Drugim argumentem funkcji printf () może być zmienna.

Zastępując się kolejną wartością argumentu funkcji drukowania, mówi się, że specyfikator jest rozszerzony do odpowiedniej wartości. Uwaga: %i dotyczy liczby całkowitej, a %F dotyczy numeru pływaka.

Teraz, jeśli jedno zero zostanie wstawione między % a faktycznym specyfikatorem, i, i.mi., %0i za 1 zero, a następnie 52 zostanie wyprowadzone jako 52. Jeśli jest to %02i, dla 2 zer, 52 nadal będzie wyprowadzane jako 52. Jeśli jest to %03i, dla 3 zer, 52 zostanie wyprowadzone jako 052. Jeden zero został dodany w trzeciej pozycji, liczy się z prawego końca liczby. Jeśli jest to %04i, dla 4 zer, 52 zostanie wyprowadzone jako 0052. W czwartej pozycji dodano dwie zera, licząc od prawego końca liczby.

W tym kontekście zero nazywa się flagą. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („liczba to: %0i \ n”, 52);
printf („liczba to: %02i \ n”, 52);
printf („liczba to: %03i \ n”, 52);
printf („liczba to: %04i \ n”, 52);
powrót 0;

Wyjście to:

Liczba to: 52
Liczba to: 52
Liczba to: 052
Liczba to: 0052

Zero w tym kontekście nazywa się flagą. Inną możliwą flagą jest przestrzeń. Poniższy program ilustruje to dla przestrzeni:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („liczba to: %i \ n”, 52);
printf („liczba to: %2i \ n”, 52);
printf („liczba to: %3i \ n”, 52);
printf („liczba to: %4i \ n”, 52);
powrót 0;

Wyjście to:

Liczba to: 52
Liczba to: 52
Liczba to: 52
Liczba to: 52

Zauważ, że z flagą przestrzenną nie używano żadnego znaku w specyfikatorze formatu. Flaga jest dodawana przed liczbą, aby stworzyć liczbę pozycji wymaganych dla pola prezentacji, licząc z prawej strony. Jeśli liczba pozycji jest mniejsza lub równa liczbie cyfr, żadna flaga nie jest dodawana.

Szerokość pola

Pole to liczba znaków, które można wyświetlić dla tej liczby. Szerokość pola to maksymalna liczba znaków, które programista ma nadzieję uzyskać. Numer szerokości pola jest wstawiany tuż po flagie (w prawo) w specyfikacji formatu. Jest taki sam jak poprzedni numer. Jeśli liczba wyświetlanych znaków jest naturalnie większa niż szerokość pola, funkcja printf () na to pozwoli. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („liczba to: %03i \ n”, 1);
printf („liczba to: %03i \ n”, 12);
printf („liczba to: %03i \ n”, 123);
printf („liczba to: %03i \ n”, 1234);
printf („liczba to: %03i \ n”, 12345);
powrót 0;

Wyjście to:

Liczba to: 001
Liczba to: 012
Liczba to: 123
Liczba to: 1234
Liczba to: 12345

Platforma

Numer punktu pływającego to liczba z częścią liczbową i częścią dziesiętną. Uwaga: część liczb całkowita nie jest reprezentowana jako liczba całkowita, wewnętrznie. Rzeczywisty specyfikator pływaka to „F”. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („liczba to: %f \ n”, 2.53);
powrót 0;

Wyjście dla komputera autora to:

Liczba to: 2.530000

Ta liczba ma naturalnie 2 miejsca po przecinku. Niestety dołączono 4 miejsca po przecinku 4 zer. Prawda jest taka, że ​​komputer autora okrąża liczbę miejsc dziesiętnych do 6. Dodaje zera, aby nadrobić 6 miejsc po przecinku, jeśli naturalna liczba miejsc dziesiętnych jest mniejsza. Programista może rozstrzygać liczbę miejsc dziesiętnych. Może być mniejsze lub równe 6 lub może być większe niż 6.

Ta intencja wymaga innego komponentu kodu, zwanego komponentem precyzyjnym, dla specyfikatora formatu. Składa się z kropki i liczby dla liczby poszukiwanych miejsc dziesiętnych. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („liczba to: %f \ n”, 2.53);
printf („Numer to: %.1f \ n ”, 2.53);
printf („Numer to: %.2f \ n ", 2.53);
printf („Numer to: %.3f \ n ”, 2.53);
printf („Numer to: %.8f \ n ”, 2.53);
powrót 0;

Wyjście to:

Liczba to: 2.530000
Liczba to: 2.5
Liczba to: 2.53
Liczba to: 2.530
Liczba to: 2.53000000

Zauważ, że „.0 ”nie jest w żadnym ze specyfikatorów.

Wariadyczny charakter printf

Pierwszym argumentem funkcji printf () jest literał ciąg. Specyfikatory formatu mogą być przeplatane w dosłownym sznurku. Pierwszy specyfikator formatu z lewej, w literale ciągów, odpowiada drugim argumentowi funkcji printf (). Drugi specyfikator formatu z lewej, w literale ciągów, odpowiada trzecim argumentowi funkcji printf (). Trzeci specyfikator formatu odpowiada czwartemu argumentowi funkcji printf () i tak dalej. Poniższy program ilustruje to dla typów INT i Float:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int it = 52;
float ft = 2.53;
printf („Liczby to %03i i %03i i %.3f \ n ", 27, it, ft);
powrót 0;

Wyjście to:

Liczby to 027 i 052 i 2.530

Typ ciągu

Podstawowy specyfikator formatu ciągów to %s. Poniższy program pokazuje jego użycie:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („%s”, „Kocham cię.\N");
powrót 0;

Wyjście to:

Kocham cię.

Znakiem „\ n” jest wysłanie wszystkiego, co jest wydrukowane obok następnego wiersza. Cały pierwszy argument tutaj ma %s jako treść.

Różne możliwe sposoby używania liczb z specyfikatorem formatu ciągów są następujące:

%Nums
%.Nums
%-Nums
%.Num1-Num2s
%-Num1.num2s
%Nums

W ciągu jest 11 znaków: „Kocham cię.„DOT to postać. Jeśli NUM jest mniejsza niż 11, ciąg wyjściowy nie zostanie obcięty. Jeśli jest to większe niż 11, dodatkowe przestrzenie zostaną wyściełane po lewej stronie, aby całkowita liczba znaków w polu podana liczba. Poniższy kod to ilustruje:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („%7s”, „Kocham cię.\N");
printf („%16S”, „Kocham cię.\N");
powrót 0;

Wyjście to:

Kocham cię.
Kocham cię.
%.Nums

Tutaj jest kropka przed liczbą. DOT tutaj oznacza wydrukowanie liczby znaków danej liczby, zaczynając od pierwszego postaci. Oznacza to, że jeśli NUM jest mniejsza niż całkowita liczba znaków, obcinaj równowagę po prawej stronie. Jeśli nume jest więcej, dodaj przestrzenie po prawej stronie, aby nadrobić podany numer. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf ("%.7s ",„ Kocham cię.\N");
printf ("%.16s ",„ Kocham cię.\N");
powrót 0;

Wyjście to:

Kocham cię kocham.

To wyjście wymaga dalszego wyjaśnienia. W ciągu „Kocham cię.\ n ”, jest 12 znaków. „\ N” to postać. Pierwsze 7 postaci to „Kocham”. Pierwsza funkcja programu printf () drukuje to: „I Love”, obcinając resztę literatu, w tym „\ n”. Od „\ n” pierwszego „Kocham cię.\ n ”zostało zdejmowane, cokolwiek trzeba wydrukować w następnym, jest wydrukowane na tej linii. Druga funkcja printf () drukuje swoje 11 znaków. Dwunastowa postać, która jest „\ n”, powoduje, że kursor przechodzi do następnej linii. Następnie należy wydrukować kolejne 4 przestrzenie.

%-Nums

Tutaj przed liczbą jest łącznik. Łącznik oznacza, wydrukuj liczbę znaków danej liczby, poczynając od pierwszej postaci. Dodatkowo nie obcinaj, czy num jest mniejszy niż całkowita liczba znaków. Po prostu dodaj więcej miejsc po prawej stronie, aby nadrobić podany numer. Poniższy program ilustruje to:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

printf („%-7s”, „Kocham cię.\N");
printf („%-16s”, „Kocham cię.\N");
powrót 0;

Wyjście to:

Kocham cię.
Kocham cię.
kursor

Kursor pojawia się po 4 dodatkowych przestrzeniach w trzeciej linii.

%.NUM1-NUM2S, %-NUM1.num2s

Interpretacja tych dwóch elementów pozostaje jako ćwiczenie dla czytelnika.

Biała przestrzeń

„\ N” jest przykładem postaci białej. Postacie białych to sekwencje ucieczki. Nie są drukowane. Po prostu mają swoje indywidualne efekty. Na przykład „\ n” powoduje, że kursor przechodzi do następującej linii. W poprzednich próbkach kodu ten „\ n” został zastosowany w pierwszym argumencie funkcji printf (), literał. Nadal może być stosowany jako zmienna, jak pokazuje następujący program:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

char vr = '\ n';
printf („pierwsza linia%csecond linia”, VR);
powrót 0;

Wyjście to:

Pierwsza linia
Drugi liniowy

Poniżej znajdują się białe listy i ich znaczenia:

\N: Dodaj nową linię

\T: Zakładka pozioma

\ V: Karta pionowa

\F: Form Feed

\ 040: Pojedyncza przestrzeń, naciskając klawisz paska kosmicznego

\R: zwrot powozu

Wniosek

Formatowanie ciągów oznacza umieszczanie niektórych znaków dla łańcucha, w określonych pozycjach i określonej kolejności. Obejmuje to również wstawienie znaków białych w niektórych pozycjach. C ++ 20 to najnowsza wersja C++. Ma bibliotekę formatową. Jednak większość kompilatorów C ++ nie wdrożyła jeszcze tej biblioteki. Uwaga: funkcja Variatyka printf (), włączona do języka C ++ z języka C, jest podobna do celu biblioteki formatowej. Pierwszym argumentem tej funkcji jest literał ciąg. Specyfikatory formatu są przeplatane w środku. Reszta argumentów do funkcji printf () odpowiada tym specyfikacjom w porządku.