Formatbezeichner in C/C++
Nach oben zu C++-Referenz
Formatbezeichner werden in vielen C-Funktionen und in der RTL für Klassen, wie UnicodeString, verwendet.
Format-Strings enthalten zwei Typen von Objekten: reine Zeichen und Formatbezeichner. Reine Zeichen werden wörtlich in den resultierenden String kopiert. Formatbezeichner rufen Argumente aus der Argumentliste ab und weisen ihnen ein Format zu.
Formatbezeichner werden in der folgenden Form angegeben:
"%" ["-"] [Breite] ["." Genauigkeit] Typ
Jeder Formatbezeichner beginnt mit dem Zeichen % (Prozent). Auf das Prozentzeichen folgt eine der nachstehenden Angaben (in der aufgeführten Reihenfolge):
- Eine optionale Angabe für die linksbündige Ausrichtung: ["-"] (Bindestrich)
- Eine optionale Breitenangabe: [Breite]
- Eine optionale Genauigkeitsangabe: ["." Genauigkeit] (Punkt).
- Das Zeichen für den Konvertierungstyp: Typ
Formattypen der C-Laufzeit:
| Bezeichner | Bedeutung |
|---|---|
|
d, i |
Dezimal oder Integer. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalzahlen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt. |
|
u |
Vorzeichenloses Integer. Entspricht "d" und "i", aber ohne Vorzeichen. |
|
o |
Oktal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus oktalen Stellen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt. |
|
x |
Hexadezimal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalzahlen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt. |
|
f |
Gleitkomma. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-ddd.ddd...". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Die Anzahl der Stellen nach dem Dezimalkomma wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von zwei Dezimalstellen verwendet. |
|
e |
Wissenschaftliche Notation. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String mit der folgenden Form umgewandelt: "-d,ddd...E+ddd". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Vor dem Dezimalzeichen steht immer eine Ziffer. Die Gesamtzahl der Stellen im Ergebnis-String (einschließlich der Ziffer vor dem Dezimalkomma) wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Auf den Exponenten "E" im String folgen immer ein Plus- oder Minuszeichen und mindestens drei Stellen. |
|
g |
Double. Das Argument muss ein Gleitkommawert sein. Der Wert wird unter Verwendung des Formats "Fest" oder "Wissenschaftliche Notation" in den kürzest möglichen Dezimal-String umgewandelt. Die Anzahl der signifikanten Stellen im resultierenden String wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Nachfolgende Nullen werden aus dem resultierenden String entfernt. Ein Dezimalzeichen wird nur bei Bedarf angezeigt. Für den resultierenden String wird das Festkommaformat verwendet, wenn die Anzahl der Stellen vor dem Dezimalzeichen kleiner oder gleich der festgelegten Genauigkeit und der Wert größer oder gleich 0,00001 ist. In allen anderen Fällen wird die wissenschaftliche Notation benutzt. |
|
c |
Zeichen. Das Argument muss ein Einzelzeichenwert sein. |
|
s |
String. Das Argument muss ein Zeichen, ein String oder ein char*-Wert sein. Der String bzw. die Zeichen werden an der Position des Formatbezeichners eingefügt. Wenn im Format-String ein Genauigkeitsbezeichner angegeben ist, bestimmt er die maximale Länge des resultierenden Strings. Ist das Argument ein String, der diese Maximallänge überschreitet, wird der String abgeschnitten. |
Hinweis: Für die langen Versionen der jeweiligen Datentypen wird das Präfix "l", für die kurzen das Präfix "h" verwendet. Die Präfixe können für die Bezeichner "d", "i", "u", "o', "x", "f", "g" verwendet werden. Wenn beispielsweise "%lf" anstelle von "%f" verwendet wird, müssen Sie einen double-Wert als jeweiligen Parameter anstatt eines Gleitkommawertes übergeben.
Für die folgenden Beispiele wurden die Funktionen printf und wprintf verwendet:
Integer/Dezimal:
printf("%d\n", -5); //-5 printf("%i\n", -5); //-5
Ohne Vorzeichen:
printf("%u\n", 5); //5
Oktal:
printf("%o\n", 9); //11
Hexadezimal (Groß- und Kleinbuchstaben):
printf("%x\n", 15); //f printf("%X\n", 15); //F
Gleitkomma und langes Gleitkomma:
printf("%%f is : %f\n", 1.0/3.0); //0.333333 printf("%%lf is : %lf\n", 5000000000000000.0/2.3); //Eine große Zahl
Wissenschaftlich:
printf("%e\n", 5.5); //5.500000e+00
Double:
printf("%g\n", 1.0/3.0); //0.333333
Breiten- und Genauigkeitsbezeichner:
printf("%f\n", 1.0/3.0); //0.333333 printf("%-5.1f\n", 1.0/3.0); //0.3 printf("%5.1f\n", 1.0/3.0); // 0.3--Zwei Whitespaces am Anfang
Zeichen und String:
printf("%c",'a'); printf("%s","string");
Wide-Strings:
wprintf(L"%s", L"string");