C ++ String Formatierung

C ++ String Formatierung
String -Formatierung bedeutet, bestimmte Zeichen für eine Zeichenfolge in bestimmten Positionen und eine bestimmte Reihenfolge zu setzen. Dies beinhaltet auch die Einführung von Whitespace -Zeichen in bestimmten Positionen. C ++ 20 ist die neueste Version von C++. Es hat eine Formatbibliothek und G ++, die einer der beliebtesten C ++ - Compiler ist, implementiert es. Die Variadikfunktion printf (), die in die C ++ - Sprache aus der C -Sprache eingebaut ist, ähnelt jedoch dem Zweck der Formatbibliothek. Eine variadische Funktion ist eine Funktion, die zu unterschiedlichen Zeiten eine variable Anzahl von Argumenten erfolgen kann.

Eine Zeichenfolge kann formatiert werden, sie an die Konsole senden oder an eine Datei sendet. In diesem Tutorial wird die Formatierung einer Zeichenfolge unter Verwendung der Funktion printf () erläutert und sie an das Terminal (Konsole) sendet. In C ++ kann die printf () -Funktion durch Einbeziehung der Bibliothek verwendet werden.

Artikelinhalt

- Arithmetische Typen

- Variadische Natur von printf

- String -Typ

- Whitespace

- Abschluss

Arithmetische Typen

Arithmetische Typen sind ganzzahlige und schwimmende Typen. Betrachten Sie das folgende Programm:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("ein Text \ n");
Rückkehr 0;

Die Ausgabe ist:

etwas Text

Das erste Argument für die Printf () -Funktion ist eine Zeichenfolge, die wörtlich ist. Das Newline-Charakter „\ n“ im String-Literal erzwingt alles, was als nächstes gedruckt werden kann, um in der nächsten Zeile gedruckt zu werden, auch wenn sich dieses Ding in den Doppelquoten befindet. Das "\ n" ist auch ein Whitespace -Charakter.

Mit Aufnahme von "#include" ist nicht wirklich notwendig.

Ganze Zahl

Betrachten Sie die folgenden printf () -Anweisungen:

printf ("Nummer ist: %i \ n", 52);
printf ("Nummer ist: %d \ n", 52);

Die Ausgabe ist:

Nummer ist: 52
Nummer ist: 52

Der %i oder %d ist ein Beispiel für einen Formatspezifizierer. %I innerhalb des ersten Arguments der printf -Funktion, die ein Zeichenfolge ist, bedeutet, sich selbst durch den Ganzzahlwert zu ersetzen, der das nächste Argument der Printf -Funktion ist. %d ist ein Synonym für %i. Das „\ n“ spielt immer seine Rolle beim Senden des Sendens, was neben der nächsten Zeile am Terminal gedruckt werden soll. Ein Spezifizierer wie %i, der neben \ n eingegeben wird, stellt keinen Interessenkonflikt dar. Das zweite Argument für die Funktion printf () kann eine Variable sein.

Indem Sie sich durch den nächsten Argumentwert der Printf -Funktion ersetzen, soll der Spezifizierer auf den entsprechenden Wert erweitert werden. Hinweis: %I ist für eine Ganzzahl, während %F für eine Schwimmerzahl ist.

Wenn nun eine Null zwischen % und den tatsächlichen Spezifizierer eingefügt wird, i, ich, ich.e., %0i für 1 Null, dann werden 52 als 52 ausgegeben. Wenn es %02i ist, wird für 2 Nullen 52 weiterhin als 52 ausgegeben. Wenn es %03i ist, wird für 3 Nullen 52 als 052 ausgegeben. Eine Null wurde in der dritten Position aus dem rechten Ende der Zahl hinzugefügt. Wenn es %04i ist, werden 52 für 4 Nullen als 0052 ausgegeben, 0052. In der vierten Position wurden zwei Nullen hinzugefügt, um vom rechten Ende der Zahl zu zählen.

In diesem Zusammenhang wird Null als Flagge bezeichnet. Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("Nummer ist: %0i \ n", 52);
printf ("Nummer ist: %02i \ n", 52);
printf ("Nummer ist: %03i \ n", 52);
printf ("Nummer ist: %04i \ n", 52);
Rückkehr 0;

Die Ausgabe ist:

Nummer ist: 52
Nummer ist: 52
Nummer ist: 052
Nummer ist: 0052

Null wird in diesem Zusammenhang eine Flagge bezeichnet. Eine weitere mögliche Flagge ist der Raum. Das folgende Programm zeigt dies für den Raum:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("Nummer ist: %i \ n", 52);
printf ("Nummer ist: %2i \ n", 52);
printf ("Nummer ist: %3i \ n", 52);
printf ("Nummer ist: %4i \ n", 52);
Rückkehr 0;

Die Ausgabe ist:

Nummer ist: 52
Nummer ist: 52
Nummer ist: 52
Nummer ist: 52

Beachten Sie, dass im Formatspezifizierer kein Zeichen verwendet wird. Vor der Nummer wird eine Flag. Wenn die Anzahl der Positionen geringer ist als oder gleich der Anzahl der Ziffern, wird kein Flag hinzugefügt.

Feldbreite

Ein Feld ist die Anzahl der Zeichen, die für diese Nummer angezeigt werden können. Eine Feldbreite ist die maximale Anzahl von Zeichen, die der Programmierer erhofft. Die Feldbreite wird kurz nach dem Flag (rechts) im Formatspezifizierer eingefügt. Es ist dasselbe wie die vorherige Zahl. Wenn die Anzahl der angezeigten Zeichen von Natur aus größer ist als die Feldbreite, ermöglicht die Funktion printf () sie. Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("Nummer ist: %03i \ n", 1);
printf ("Nummer ist: %03i \ n", 12);
printf ("Nummer ist: %03i \ n", 123);
printf ("Nummer ist: %03i \ n", 1234);
printf ("Nummer ist: %03i \ n", 12345);
Rückkehr 0;

Die Ausgabe ist:

Nummer ist: 001
Nummer ist: 012
Nummer ist: 123
Nummer ist: 1234
Nummer ist: 12345

Schweben

Eine schwimmende Punktzahl ist eine Zahl mit dem Ganzzahl und einem Dezimalteil. Beachten Sie, dass der ganzzahlige Teil intern nicht als Ganzzahl dargestellt wird. Der tatsächliche Spezifizierer für den Float ist "f". Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("Nummer ist: %f \ n", 2.53);
Rückkehr 0;

Die Ausgabe für den Computer des Autors ist:

Nummer ist: 2.530000

Diese Zahl hat natürlich 2 Dezimalstellen. Leider wurden 4 Dezimalstellen von 4 Nullen angehängt. Die Wahrheit ist, dass der Computer des Autors die Anzahl der Dezimalstellen auf 6 rundet. Es wird Nullen anhängen, um 6 Dezimalstellen auszugleichen, wenn die natürliche Anzahl von Dezimalstellen geringer ist. Die Anzahl der Dezimalstellen kann vom Programmierer entschieden werden. Es kann weniger oder gleich 6 sein oder es kann größer als 6 sein.

Diese Absicht erfordert eine andere Codekomponente, die als Präzisionskomponente bezeichnet wird, für den Formatspezifizierer. Es besteht aus dem Punkt und einer Zahl für die Anzahl der gewünschten Dezimalstellen. Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("Nummer ist: %f \ n", 2.53);
printf ("Nummer ist: %.1f \ n ", 2.53);
printf ("Nummer ist: %.2f \ n ", 2.53);
printf ("Nummer ist: %.3f \ n ", 2.53);
printf ("Nummer ist: %.8f \ n ", 2.53);
Rückkehr 0;

Die Ausgabe ist:

Nummer ist: 2.530000
Nummer ist: 2.5
Nummer ist: 2.53
Nummer ist: 2.530
Nummer ist: 2.53000000

Beachten Sie, dass ".0 ”befindet sich in keinem der Spezifizierer.

Variadische Natur von printf

Das erste Argument der Printf () -Funktion ist eine Zeichenfolge, die wörtlich ist. Formatspezifizierer können innerhalb des Saitenliterales durchsetzt werden. Der erste Format -Spezifizierer von links im String -Literal entspricht dem zweiten Argument der Printf () -Funktion. Der zweite Formatspezifizierer von links im String -Literal entspricht dem dritten Argument der Printf () -Funktion. Der dritte Formatspezifizierer entspricht dem vierten Argument der Printf () -Funktion und so weiter. Das folgende Programm zeigt dies für die INT- und Float -Typen:

#enthalten
Verwenden von Namespace STD;
int main ()

int it = 52;
float ft = 2.53;
printf ("Zahlen sind, %03i und %03i und %.3f \ n ", 27, it, ft);
Rückkehr 0;

Die Ausgabe ist:

Die Zahlen sind 027 und 052 und 2.530

String -Typ

Der grundlegende String -Formatspezifizierer ist %s. Das folgende Programm zeigt die Verwendung:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("%s", "Ich liebe dich.\N");
Rückkehr 0;

Die Ausgabe ist:

Ich liebe dich.

Das Zeichen '\ n' soll alles neben der nächsten Zeile senden, was gedruckt wird. Das erste Argument hier hat %s als Inhalt.

Die unterschiedlichen möglichen Möglichkeiten zur Verwendung von Zahlen mit dem String -Format -Spezifizierer sind wie folgt:

%nums
%.nums
%-nums
%.Num1-Num2s
%-num1.Num2s
%nums

Es gibt 11 Zeichen in der Zeichenfolge: „Ich liebe dich.”Der Punkt ist ein Charakter. Wenn Num weniger als 11 ist, wird die Ausgangszeichenfolge nicht abgeschnitten. Wenn es größer als 11 ist, werden links zusätzliche Räume gepolstert, um die Gesamtzahl der Zeichen im Feld zur angegebenen Zahl zu ermöglichen. Der folgende Code zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("%7s", "Ich liebe dich.\N");
printf ("%16S", "Ich liebe dich.\N");
Rückkehr 0;

Die Ausgabe ist:

Ich liebe dich.
Ich liebe dich.
%.nums

Hier gibt es einen Punkt vor der Zahl. Der Punkt bedeutet hier, die Anzahl der Zeichen der angegebenen Nummer aus dem ersten Zeichen auszudrucken. Dies bedeutet, wenn Num geringer als die Gesamtzahl der Zeichen ist, schneiden Sie das Gleichgewicht rechts ab. Wenn Num mehr ist, fügen Sie auf dem Recht Räume hinzu, um die angegebene Nummer auszugleichen. Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("%.7s "," Ich liebe dich.\N");
printf ("%.16s "," Ich liebe dich.\N");
Rückkehr 0;

Die Ausgabe ist:

Ich liebe, ich liebe dich.

Diese Ausgabe braucht weitere Erklärungen. In der Saite „Ich liebe dich.\ n ”, es gibt 12 Zeichen. "\ N" ist ein Charakter. Die ersten 7 Charaktere sind "Ich liebe". Die erste Printf () -Funktion des Programms druckt Folgendes: „Ich liebe“ und verkürzt den Rest des String -Literales, einschließlich „\ n“, einschließlich „\ n“. Seit „\ n“ der ersten „Ich liebe dich.\ n “wurde abgenommen, was als nächstes gedruckt werden muss, wird in dieser Zeile gedruckt. Die zweite printf () -Funktion druckt seine 11 Zeichen. Der zwölfte Charakter, der „\ n“ ist, bewirkt, dass der Cursor in die nächste Zeile geht. Dann sollten 4 weitere Plätze als nächstes gedruckt werden.

%-nums

Hier gibt es einen Bindestrich vor der Zahl. Der Bindestrich bedeutet, die Anzahl der Zeichen der angegebenen Zahl aus dem ersten Charakter auszudrucken. Außerdem nicht abschneiden, wenn Num geringer ist als die Gesamtzahl der Zeichen. Fügen Sie einfach mehr Leerzeichen auf der rechten Seite hinzu, um die angegebene Zahl auszugleichen. Das folgende Programm zeigt dies:

#enthalten
Verwenden von Namespace STD;
int main ()

printf ("%-7s", "Ich liebe dich.\N");
printf ("%-16s", "Ich liebe dich.\N");
Rückkehr 0;

Die Ausgabe ist:

Ich liebe dich.
Ich liebe dich.
Mauszeiger

Der Cursor erscheint nach 4 zusätzlichen Leerzeichen in der dritten Zeile.

%.Num1-num2s, %-num1.Num2s

Die Interpretation dieser beiden Elemente bleibt als Übung für den Leser.

Whitespace

Das "\ n" ist ein Beispiel für einen Whitespace -Charakter. Whitespace -Zeichen sind Fluchtsequenzen. Sie werden nicht gedruckt. Sie haben nur ihre individuellen Effekte. Zum Beispiel veranlasst „\ n“ den Cursor in die folgende Zeile. In den vorherigen Code -Beispielen wurde dieses „\ n“ im ersten Argument der Printf () -Funktion, einem String -Literal, eingesetzt. Es kann weiterhin als Variable verwendet werden, wie das folgende Programm zeigt:

#enthalten
Verwenden von Namespace STD;
int main ()

char vr = '\ n';
printf ("Erste Zeile%cSecond Line", VR);
Rückkehr 0;

Die Ausgabe ist:

erste Linie
Zweiter Linecursor

Das Folgende sind Whitespaces und ihre Bedeutungen:

\N: Fügen Sie eine neue Linie hinzu

\T: Horizontale Registerkarte

\ v: vertikale Registerkarte

\F: Formfutter

\ 040: Einzelraum durch Drücken der Space Bar -Taste

\R: Wagenrückgabe

Abschluss

String -Formatierung bedeutet, bestimmte Zeichen für eine Zeichenfolge, in bestimmten Positionen und bestimmte Reihenfolge zu platzieren. Dies beinhaltet auch die Einführung von Whitespace -Zeichen in bestimmten Positionen. C ++ 20 ist die neueste Version von C++. Es hat eine Formatbibliothek. Die meisten C ++ - Compiler haben diese Bibliothek jedoch noch nicht implementiert. Beachten Sie, dass die variadische Funktion printf () in die C ++ - Sprache aus der C -Sprache aufgenommen wird, ähnelt dem Zweck der Formatbibliothek. Das erste Argument für diese Funktion ist ein String buchstäblich. Die Formatspezifizierer sind innerhalb des Verschiebers durchsetzt. Die restlichen Argumente an die printf () -Funktion entsprechen diesen Spezifikatoren in der Reihenfolge.