Obsah / Utility / TEXTFORM / Formátovací řetězec funkce FormToTextBuf
Související:
FormToTextBuf | Zformátování textu do bufferu | |
FormToTextBufN | Délka formátovaného textu |
Formátovací řetězec funkce FormToTextBuf
Formátovací řetězec specifikuje, jak mají být konvertovány vstupní argumenty funkce FormToTextBuf na text.
Formátovací řetězec obsahuje jak běžné znaky, které jsou uloženy do výstupního bufferu beze změny, tak formátovací řetězec, který je uvozen symbolem procenta %. Formátovací řetězec má následující syntaxi:
%[přepínače][šířka][.[.]][přesnost][rozměr]typ
Typ:
c, C | int | Jeden znak Unicode. | |||
s, S | text | Textový řetězec v kódu UTF-8. | |||
d, D, i | int | Dekadické celé číslo se znaménkem. | |||
u, U | uint | Dekadické celé číslo bez znaménka. | |||
b, B | uint | Binární celé číslo bez znaménka. | |||
o, O | uint | Oktalové celé číslo bez znaménka. | |||
x | uint | Hexadecimální celé číslo bez znaménka, používá malá písmena "abcdef". | |||
X | uint | Hexadecimální celé číslo bez znaménka, používá velká písmena "ABCDEF" (prefix 0x je vždy malým písmenem). | |||
f | double | Desetinné číslo ve formátu "[-]dddd.dddd", kde dddd je jedna nebo více dekadických číslic. Počet číslic před desetinnou čárkou závisí na velikosti čísla. Počet číslic za desetinnou čárkou závisí na požadované přesnosti. Implicitně se koncové nevýznamné nuly neodstraňují a desetinná čárka se odstraní pokud za ní nenásleduje žádná číslice. Poslední číslice údaje se zaokrouhlí na nejbližší hodnotu. | |||
F | double | Identické s formátem f s tím rozdílem, že poslední číslice se nezaokrouhluje. | |||
e | double | Desetinné číslo ve formátu "[-]d.dddd e [znaménko]ddd[d]", kde d je jedna dekadická číslice, dddd je jedna nebo více dekadických číslic, ddd[d] jsou 3 nebo 4 dekadické číslice exponentu, znaménko je + nebo -. Implicitně se koncové nevýznamné nuly neodstraňují a desetinná čárka se odstraní pokud za ní nenásleduje žádná číslice. Poslední číslice údaje se zaokrouhlí na nejbližší hodnotu. | |||
E | double | Identické s formátem e s tím rozdílem, že exponent se označí velkým písmenem E a poslední číslice se nezaokrouhluje. | |||
g | double | Desetinné číslo ve formátu f nebo e. Formát e se zvolí v případě, že exponent je menší než -4 nebo větší nebo roven zadané přesnosti. Implicitně se nevýznamné koncové nuly odstraní a desetinná čárka se ponechá pouze pokud za ní násleudjí nějaké číslice. Poslední číslice údaje se zaokrouhlí na nejbližší hodnotu. | |||
G | double | Identické s formátem g s tím rozdílem, že exponent se označí velkým písmenem E a poslední číslice se nezaokrouhluje. | |||
% | Uloží se znak procenta %. |
Při formátování desetinných čísel mohou nastat některé zvláštní případy hodnot čísel, které budou zformátovány jako texty v tomto tvaru:
nekonečno | -1.#INF | +1.#INF | ||
není číslo nebo nedefinováno | -1.#NAN | +1.#NAN |
Přepínače:
- | Zarovnat výsledek doleva uvnitř pole dané šířky. Implicitně se zarovnává doprava. | ||
+ | Doplnit před výstupní údaj znaménko (+ nebo -) i v případě kladného čísla. Implicitně se znaménko doplní pouze pro negativní číslo. | ||
mezera | Doplnit před výstupní údaj mezeru v případě kladného čísla. | ||
0 | Číslo je doplněno zleva nulami dokud není dosažena požadovaná minimální šířka. | ||
# | Při použití s formáty o, O, x,
X, b nebo B se před výstupní údaj doplní prefix 0,
0x nebo 0b. Při použití s formáty e, E, f nebo F přepínač # zajistí, že výstupní údaj bude obsahovat desetinnou čárku i v případě, že údaj neobsahuje žádnou desetinnou číslici. Implicitně se desetinná čárka vypustí, pokud za ní nenásleduje žádná číslice. Nevýznamné koncové nuly se neodstraňují. Při použití s formátem g nebo G přepínač # zajistí, že se z výstupního údaje neodstraňuje desetinná tečka ani koncové nuly. Implicitně se z konce číselného údaje odstraní nevýznamné koncové nuly a pokud za desetinnou čárkou nenásleduje žádná číslice, vypustí se i desetinná čárka. |
||
## | Při použití s formáty o, O, x,
X, b nebo B se za výstupní údaj doplní sufix o, h
nebo b. Pokud číslo v x resp X formátu začíná
jiným znakem než číslicí, doplní se před
výstupní údaj nula. Při použití s formáty e, E, f nebo F přepínač ## zajistí odstranění nevýznamných koncových nul. Implicitně se nevýznamné koncové nuly neodstraňují. Desetinná čárka se vypouští. Při použití s formáty g nebo G přepínač ## zajistí, že výstupní údaj bude obsahovat desetinnou čárku i v případě, že údaj neobsahuje žádnou desetinnou číslici. Implicitně se desetinná čárka vypustí, pokud za ní nenásleduje žádná číslice. Nevýznamné koncové nuly se odstraňují. |
||
### | Při použití s formáty o, O, x,
X, b nebo B se přepínač projeví jako kombinace
přepínačů # a ##, tj. k číslu se přidává prefix
i sufix. Při použití s formáty e, E, f nebo F přepínač ### zajistí, že výstupní údaj bude obsahovat desetinnou čárku i v případě, že údaj neobsahuje žádnou desetinnou číslici, a také zajistí odstranění nevýznamných koncových nul. Implicitně se desetinná čárka vypustí, pokud za ní nenásleduje žádná číslice a koncové nuly se neodstraňují. Při použití s formáty g nebo G přepínač ### zajistí, že se neodstraňují nevýznamné koncové nuly. Implicitně se nevýznamné koncové nuly odstraňují. Desetinná čárka se odstraňuje. |
||
~ | Do celé části číselného údaje doplnit oddělovače řádů (tisíců). | ||
@ | Zarovnat výsledek na střed pole dané šířky. Implicitně se zarovnává doprava. |
Šířka:
Údaj šířky je nezáporné číslo řídící minimální počet znaků pole s údajem. Pokud je počet znaků výstupního údaje menší než specifikovaná šířka, doplní se mezery zleva (implicitně), zprava (je-li zadán přepínač -) nebo z obou stran (je-li zadán přepínač @). Je-li zadán přepínač 0, je údaj doplněn zleva nulami.
Specifikace šířky nikdy nezpůsobí zkrácení údaje. Má-li údaj větší počet znaků než specifikovaná šířka, uloží se všechny znaky. Údaj šířky je omezen na hodnotu 255.
Použije-li se namísto údaje šířky znak hvězdičky *, načte se údaj šířky z argumentů jako číslo int (s omezením na 255). Argument šířky musí být v seznamu argumentů uveden před formátovaným argumentem.
Přesnost:
Přesnost je nezáporné číslo, před kterým předchází znak tečky. Přesnost může omezit přesnost výstupního údaje nebo jeho délku. Přesnost je omezena na údaj 255.
Použije-li se namísto údaje přesnosti znak hvězdičky *, načte se údaj přesnosti z argumentů jako číslo int (s omezením na 255). Argument přesnosti musí být v seznamu argumentů uveden před formátovaným argumentem.
c, C | Přesnost se neuplatní. | ||
s, S | Přesnost specifikuje maximální počet znaků. Při zadání 0 (implicitní nastavení) se počet znaků neomezí. | ||
d, D, i, u, U, o, O, x, X, b, B | Přesnost specifikuje minimální počet číslic. Je-li počet číslic údaje nižší než zadaná přesnost, údaj se zleva doplní nulami. Údaj není zkrácen pokud délka údaje přesáhne požadovanou přesnost. Implicitní přesnost je 1 číslice. | ||
f, F, e, E | Přesnost specifikuje počet číslic za desetinnou čárkou. Implicitní přesnost je 6. Je-li zadána přesnost 0, vypustí se desetinná čárka (není-li přepínačem # stanoveno jinak). | ||
g, G | Přesnost specifikuje maximální počet významných číslic. Implicitní přesnost je 6 číslic. |
Alternativní přesnost:
Alternativní přesnost se použije v případě, že k oddělení přesnosti se namísto jednoho znaku tečky použijí tečky dvě. Alternativní přesnost se uplatní pouze u desetinných čísel.
f, F, e, E | Alternativní přesnost specifikuje maximální počet významných číslic. | ||
g, G | Alternativní přesnost specifikuje počet číslic za desetinnou čárkou. |
Rozměr:
Symbol rozměru je úpřesňující údaj stanovující velikost argumentu.
I16, h, H | Krátká varianta - 16-bitové celé číslo (short int) nebo desetinné číslo s jednoduchou přesností (single float). | ||
I32 | Implicitní varianta - 32 bitové celé číslo (int) nebo desetinné číslo s dvojnásobnou přesností (double). | ||
I64, l, L | Dlouhá varianta - 64-bitové celé číslo (long int) nebo desetinné číslo s rozšířenou přesností (extended double). |
Explicitní index:
Pomocí zápisu "index$", kde index je celé číslo v rozsahu 1 až 255 následované znakem $, lze určit, že argument bude načítán z argumentu zadaného explicitního indexu namísto standardního sekvenčního pořadí argumentů. Pokud explicitní index následuje za znakem hvězdičky * v poli šířky, načte se šířka z argumentu s daným explicitním indexem. Podobně po zadání po znaku hvězdičky * v poli přesnosti se explicitní index uplatní při načtení přesnosti. V ostatních případech (před explicitním indexem nepředchází znak hvězdičky) se načtou data z argumentu s daným indexem. Explicitní index neovlivní normální pořadí argumentů.
Explicitní index se nevztahuje přímo k pořadovému číslu argumentu v seznamu argumentů. Vztahuje se k indexu dvojslova (DWORD) čísla. Na to je potřeba pamatovat u argumentů s větší velikostí než dvojslovo. Argumenty velikosti int, short int, single float, jsou uloženy do jednoho dvojslova. Argument double je uložen do 2 dvojslov a argument extended double do 3 dvojslov. Velikost argumentu lze zjistit z popisovače formátovacího parametru pomocí funkce FormGetArgLen.
Obsah / Utility / TEXTFORM / Formátovací řetězec funkce FormToTextBuf