tuple_stringtuple_stringTupleStringTupleString (Operator)

Name

tuple_stringtuple_stringTupleStringTupleString — Konvertieren eines Tupels in ein Tupel von Strings.

Signatur

tuple_string( : : T, Format : String)

Herror tuple_string(double T, const char* Format, char* String)

Herror T_tuple_string(const Htuple T, const Htuple Format, Htuple* String)

void TupleString(const HTuple& T, const HTuple& Format, HTuple* String)

HTuple HTuple::TupleString(const HTuple& Format) const

static void HOperatorSet.TupleString(HTuple t, HTuple format, out HTuple stringVal)

HTuple HTuple.TupleString(HTuple format)

Beschreibung

tuple_stringtuple_stringTupleStringTupleStringTupleString konvertiert Zahlen in Strings und modifiziert Strings. Der Operator hat zwei Parameter: TTTTt enthält die Zahlen oder Strings, die konvertiert werden sollen. FormatFormatFormatFormatformat spezifiziert die Konversion.

Im folgenden werden zuerst einige Beispiele für die Benutzung von tuple_stringtuple_stringTupleStringTupleStringTupleString gegeben und anschließend die Struktur des FormatFormatFormatFormatformat-Strings erläutert.

Beispiele

Beispiele für die Konvertierung von Zahlen in Strings:

TTTTt (Input) FormatFormatFormatFormatformat (Input) StringStringStringStringstringVal (Output)
23 '10.2f' '         23.00'
23 '-10.2f' '23.00         '
4 '.7f' '4.0000000'
1234.56789 '+10.3f' ' +1234.568'
255 'x' 'ff'
255 'X' 'FF'
0xff '.5d' '00255'

Beispiele für die Modifikation von Strings:

TTTTt (Input) FormatFormatFormatFormatformat (Input) StringStringStringStringstringVal (Output)
'total' '10s' '       total'
'total' '-10s' 'total       '
'total' '-10.3s' 'tot          '

Format-String

Der FormatFormatFormatFormatformat-String besteht aus den folgenden vier Teilen: <flags><field width><precision><conversion characters>

flags

Null oder mehr Flags, in beliebiger Reihenfolge, die die Bedeutung der Konversionsspezifikation modifizieren. Die Flags können aus den folgenden Zeichen bestehen:

-

Das Ergebnis der Konversion wird links im Ergebnisfeld ausgerichtet.

+

Das Ergebnis einer vorzeichenbehafteten Konversion fängt immer mit dem Vorzeichen an, also + oder -.

<space>

Falls das erste Zeichen einer vorzeichenbehafteten Konversion kein Vorzeichen ist, wird ein Leerzeichen vor das Ergebnis eingefügt. Falls das <space> Flag und das + Flag gleichzeitig angegeben werden, wird das <space> Flag ignoriert.

#

Der Wert soll in eine „alternativen Form“ konvertiert werden. Für die d und s Konversionen hat dieses Flag keine Auswirkungen. Bei der o Konversion (siehe unten) erhöht es die Präzision, so dass das erste Zeichen immer als 0 ausgegeben wird. Bei den x oder X Konversionen (siehe unten) wird an Ergebnisse ungleich Null immer 0x oder 0X am Anfang eingefügt. Bei den e, E, f, g, und G Konversionen enthält das Ergebnis immer den Dezimalpunkt, selbst wenn auf den Dezimalpunkt keine Ziffern folgen. Bei den g, und G Konversionen werden außerdem, im Gegensatz zum normalen Verhalten, abschließende Nullen nicht entfernt.

field width

Eine optionale Zeichenfolge von Dezimalziffern, die eine minimale Breite des Ergebnisfeldes spezifiziert. Falls der konvertierte Wert weniger Zeichen als die Feldbreite hat, wird er links (oder rechts, falls das Linksausrichtungsflag - spezifiziert worden ist) mit Leerzeichen bis zur Feldbreite aufgefüllt.

precision

Die Präzision spezifiziert die minimale Anzahl von Ziffern, die für die d, o, x, oder X Konversionen ausgegeben werden soll (das Ergebnisfeld wird mit führenden Nullen aufgefüllt). Für die e und f Konversionen spezifiziert sie die Anzahl der Ziffern, die hinter dem Dezimalpunkt erscheinen sollen, für die g Konversion die maximale Anzahl von signifikanten Stellen, und für die s Konversion die maximale Anzahl von Zeichen, die von einem String ausgegeben werden sollen. Die Präzision hat die Form . gefolgt von einr Folge von Dezimalzahlen. Eine leere Folge wird als Null interpretiert.

conversion characters

Ein Konversionszeichen spezifiziert die Art der Konversion, die auszuführen ist:

d,o,x,X

Das ganzzahlige Argument wird als vorzeichenbehaftete Dezimalzahl (d), vorzeichenlose Oktalzahl (o) oder vorzeichenlose Hezadezimalzahl (x und X) ausgegeben. Die x Konversion verwendet die Zeichen und Buchstaben 0123456789abcdef, während die X Konversion 0123456789ABCDEF verwendet. Die Präzision spezifiziert hier die minimale Anzahl von Ziffern, die ausgegeben werden sollen. Wenn die zu konvertierende Zahl mit weniger Ziffern repräsentiert werden kann als das angegebene Minimum, werden führende Nullen eingefügt. Wenn nichts anderes angegeben wird, ist die Präzision 1. Wenn die Zahl 0 mit einer Präzision von 0 ausgegeben werden soll, wird ein leerer String erzeugt.

f

Die Gleitkommazahl im Argument wird in dezimaler Notation in folgender Art ausgegeben: [-]ddd.ddd. Hierbei ist die Anzahl Ziffern hinter dem Dezimalpunkt gleich der Präzision. Wenn die Präzision nicht angegeben wird, werden sechs Ziffern ausgegeben; wenn die Präzision explizit auf 0 gesetzt wird, werden kein Dezimalpunkt und keine Nachkommastellen ausgegeben.

e,E

Die Gleitkommazahl im Argument wird in dezimaler Notation in folgender Art ausgegeben: [-]d.ddde±dd, wobei genau eine Zahl vor dem Dezimalpunkt steht und die Anzahl von Ziffern hinter dem Dezimalpunkt gleich der Präzision ist. Wenn die Präzision nicht angegeben wird, werden sechs Ziffern ausgegeben; wenn die Präzision explizit auf 0 gesetzt wird, werden kein Dezimalpunkt und keine Nachkommastellen ausgegeben. In der E Konversion wird der Exponent in der Ausgabe durch E anstelle von e gekennzeichnet. Der Exponent enthält immer mindestens zwei Ziffern. Falls die auszugebende Zahl mehr als zwei Ziffern im Exponenten benötigt, werden weitere Ziffern ausgegeben.

g,G

Die Gleitkommazahl im Argument wird in der Art der f oder e Konversionen (oder in der Art der E Konversion, falls die G Konversion spezifiziert worden ist) ausgegeben, wobei die Präzision die Anzahl der signifikanten Stellen angibt. Die Art der Konversion hängt von der zu konvertierenden Zahl ab; die e Konversion wird nur dann verwendet, wenn der Exponent des Ergebnisses der Konversion kleiner als -4 oder größer gleich der Präzision ist. Abschließende Nullen werden aus dem Ergebnis entfernt. Ein Dezimalpunkt wird nur ausgegeben, falls er von einer Ziffer gefolgt wird.

s

Von dem String-Argument werden solange Zeichen ausgegeben, bis das Ende des Strings oder die in der Präzision angegebene Anzahl von Zeichen erreicht ist. Wenn die Präzision nicht angegeben wird, wird sie als unendlich groß interpretiert und alle Zeichen bis zum Ende des Strings werden ausgegeben.

b

Ähnlich wie die s Konversion, nur dass der String sog. Backslash-Escape-Sequenzen (Zeichenfolgen, die mit \\ beginnen) enthalten kann, die in die Zeichen, die sie repräsentieren umgewandelt werden.

In keinem Fall führt eine nicht existierende oder ungenügende Feldbreite zur Beschneidung des Feldes; wenn das Ergebnis der Konversion breiter als die Feldbreite ist, wird das Feld verbreitert, so dass das Ergebnis hineinpasst.

Sonderfall: Leere Eingabetupel

Falls eines oder mehrere Eingabetupel leer sind, wird eine Fehlermeldung angezeigt.

HDevelop Inline-Operation

HDevelop unterstützt eine Inline-Operation für tuple_stringtuple_stringTupleStringTupleStringTupleString, die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden kann:

String := T $ Format

Ausführungsinformationen

Parameter

TTTTt (input_control)  tuple(-array) HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Eingabetupel.

FormatFormatFormatFormatformat (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Format-String.

StringStringStringStringstringVal (output_control)  string(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

In Strings konvertiertes Eingabetupel.

Beispiel (HDevelop)

*
* '     23.00'
tuple_string (23, '10.2f', String)
String := 23$'10.2f'
*
* '23.00     '
tuple_string (23, '-10.2f', String)
String := 23$'-10.2f'
*
* '4.0000000'
tuple_string (4, '.7f', String)
String := 4$'.7f'
*
* ' +1234.568'
tuple_string (1234.56789, '+10.3f', String)
String := 1234.56789$'+10.3f'
*
* 'ff'
tuple_string (255, 'x', String)
String := 255$'x'
*
* 'FF'
tuple_string (255, 'X', String)
String := 255$'X'
*
* '00255'
tuple_string (0xff, '.5d', String)
String := 0xff$'.5d'
*
* '     total'
tuple_string ('total', '10s', String)
String := 'total'$'10s'
*
* 'total     '
tuple_string ('total', '-10s', String)
String := 'total'$'-10s'
*
* 'tot       '
tuple_string ('total', '-10.3s', String)
String := 'total'$'-10.3s'

Alternativen

tuple_subtuple_subTupleSubTupleSubTupleSub

Modul

Foundation