Sprintf
value Sprintf ( string BYREF strResult, string strFormat, value Arg.. );
Rückgabewert
Die Länge des Ergebnisstrings. Fehlt der Formatierungsstring strFormat oder ist dieser leer, so ist der Rückgabewert -1.
Parameter
strResult
Der String, an den die formatierte Zeichenkette übergeben wird.
strFormat
Die String nach dessen Muster die Parameter Arg formatiert werden sollen.
Die Platzhalter für die Parameter haben folgende allgemeine Form:
[%argid]%[flags][width][.precision]type
argid wird dann notwendig, wenn Formatierungstexte mehrsprachig entwickelt werden müssen und Parameter in den jeweiligen Landessprachen an unterschiedlichen Stellen des Ergebnistextes stehen müssen.
Sprintf (str, T"Heute ist %02d.%02d.%04d", TimeGetDay(), TimeGetMonth(), TimeGetYear());
Die Übersetzung von T"Heute ist %02d.%02d.%04d" ins Englische ist "Today is %2%02d/%1%02d/%3%04d". Die Schreibweise des Datums im Englischen ist Monat/Tag/Jahr, da die Übergabeparameter jedoch Tag, Monat und Jahr sind, muss der englische Formatierungstext die Reihenfolge der Argumente den Formatierungsplatzhaltern voranstellen "Today is "%2%02d/%1%02d/%3%04d".
Als flags sind möglich:
flags |
Beschreibung |
Beispiel |
Resultat |
- |
linksbündig |
"Weg %-10d km", 9232 |
"Weg 9232 km" |
+ |
bei positiven Werten '+' darstellen |
"Wert %+d", 218 |
"Wert +218" |
' ' |
bei positiven Werten ' ' darstellen |
"% d", 21 |
" 21" |
0 |
wenn width angegeben mit 0 auffüllen |
"%06d Stück", 2345 |
"002345 Stück" |
width steht als Platzhalter für die Mindestbreite der Formatierung. Wird ein Asterisk (*) als width angegeben, so wird das nächste Wert der Argumentenliste als Mindestbreite genommen.
Beispiel |
Resultat |
"%5d", 10 |
" 10" |
precision gibt die Anzahl der Nachkommastellen bzw. die maximale Anzahl Zeichen an. Wird ein Asterisk (*) als precision angegeben, so wird das nächste Wert der Argumentenliste als Anzahl der Nachkommastellen genommen.
Beispiel |
Resultat |
"%.2f", 10 |
"10.00" |
Als type sind zulässig:
type |
Beschreibung |
Beispiel |
Resultat |
d |
dezimal, vorzeichenbehaftet |
"%d, 872 |
"872" |
u |
dezimal, vorzeichenlos |
"Dezimal %05u", 453 |
"Dezimal 00453" |
b |
binär, vorzeichenlos |
"Binär %08b", 21 |
"Binär 00010101" |
o |
oktal |
"Oktal %03o", 37 |
"Oktal 025" |
x |
hexadezimal, vorzeichenlos mit a-f |
"Hexadezimal %04x", 763 |
"Hexadezimal 02fb" |
X |
hexadezimal, vorzeichenlos mit A-F |
"Hexadezimal %X", 763 |
"Hexadezimal 2FB" |
f |
Fließpunktzahl ([-]dddd.dddd) |
"Zahl %010.4f", 224.7 |
"Zahl 00224.7000" |
e |
Fließpunktzahl ([-]d.dddd) |
"Zahl %.3e", 54.2399 |
"Zahl 5.424e+001" |
c |
einzelnes Zeichen |
"Character %c", 72 |
"Character H" |
s |
Zeichenkette |
"String %s", "XYZ" |
"String XYZ" |
% |
Zeichen % |
"10 %%" |
"10 %" |
Arg..
Die Werte, welche an der Stelle der Platzhalter im Formatierungsstring eingesetzt werden.
Bemerkung
Formatiert die Parameter Arg nach dem bestimmten Muster strFormat und übergibt das Ergebnis an strResult. Das Muster in strFormat beschreibt genau, wo und wie die Parameter zu formatieren sind.
Beispiel
string str;
Sprintf (str, "%d + %d = %d = %02X", 3, 7, 10, 10);
Formatiert die Parameter entsprechend der Formatierungsanweisung und übergibt das Ergebnis an str. Das Ergebnis im obigen Beispiel ist 17 und der String str enthält den Text "3 + 7 = 10 = 0x0A".
Siehe auch StringCompare, StringCount, StringCompareNoCase, StringDelete, StringExtract, StringFind, StringFindOneOf, StringGetAt, StringGetLength, StringInsert, StringIsEmpty, StringLeft, StringMakeLower, StringMakeReverse, StringMakeUpper, StringMid, StringReplace, StringReverseFind, StringRight, StringSetAt, StringSpanExcluding, StringSpanIncluding, StringToValue, StringTrimLeft, StringTrimRight