Textový řetězec

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Textový řetězec je v programování název datového typu sloužícího k uložení konečné posloupnosti znaků.

V teorii formálních jazyků používané v matematické informatice, matematické logice a matematické lingvistice je řetězec konečná posloupnost symbolů patřících do určité konečné množiny nazývané abeceda.

Typy textového řetězce

konstantní - neměnný obsah (generovaný při překladu programu) * staticky alokovaný paměťový prostor pro řetězec - řetězec má omezenou maximální délku * dynamicky alokovaný paměťový prostor pro řetězec - řetězec má maximální délku omezenou jen velikostí volné paměti

Fyzická implementace textového řetězce

délka řetězce je definována zarážkou na konci řetězce (např. hodnota 0 na konci řetězce v jazyku C) * délka řetězce je uložena v pomocné struktuře definující řetězec - deskriptoru řetězce (např. +more typ String v Pascalu).

Definice řetězce v programu

V nízkoúrovňových jazycích typu C se musí každý řetězec definovat jako datový typ pole znaků (char[]). Každý takový řetězec musí být ukončen znakem '\0', který se nepočítá do délky řetězce. +more Příklad definice prázdného řetězce o délce 100 znaků: char retezec[100]; // Pozor - implicitně vynulováno jen u globální proměnné, jinak přidejte = ""; Dále je možné do řetězce rovnou fyzicky dosadit jednotlivé znaky (inicializovat pole znaků); to se dělá pomocí uvozovek: char retezec[100] = "nejaky, max 99 osmibitovych znaku dlouhy retezec, bla, bla, bla, . "; Také je možné používat řetězcové literály (konstanty, které nelze přepisovat): char *ukazatel_na_retezec = "nejaky, libovolne dlouhy retezec, bla, bla, bla, . "; Jazyk C neumí žádné další operace s řetězci - musí se volat funkce, které jsou součástí standardních knihoven.

V některých ostatních jazycích není nutné uvádět, že se jedná o řetězec a jak je dlouhý. Stačí jednoduše definovat proměnnou.

Příklad z jazyka PHP: Vnitřní implementace řetězce v PHP (a i v mnoha dalších dynamicky typovaných jazycích) funguje tak, že se nejprve vytvoří pole znaků základní délky podle obsahu řetězce, které se případně dynamicky rozšíří podle potřeby. Takto lze libovolně do řetězce přidávat další obsah. +more Velikost vyhrazené paměti pro řetězec bude vždy mocnina dvojky.

Tisk řetězce

V nízkoúrovňových jazycích se řetězec tiskne voláním funkce (puts, printf, fprintf), v aplikovaných jazycích (např. PHP) lze volat jen jako dynamická proměnná.

Tento zápis v jazyce C vypíše obsah řetězce na standardní výstup: puts(retezec); // vypise retezec Tento zápis v jazyce C++ vypíše nultý znak (jazyky C i C++ indexují pole od nuly): cout Celý řetězec lze vypsat v aplikovaných jazycích, např. v PHP:

Operace s textovým řetězcem

získání znaku z i-té pozice textového řetězce: s[i] * délka textového řetězce |s| * spojení textových řetězců (zřetězení) s1 + s2 * konverze velkých abecedních písmen na malá písmena * konverze malých abecedních písmen na velká písmena

Rozšířené operace

porovnání obsahu textových řetězců (ordinální nebo lexikální viz znaková sada) * vyhledání pozice znaku v textovém řetězci * vyhledání pozice podřetězce v textovém řetězci * rozdělování řetězce na více řetězců (rozdělení na podřetězce)

Reference

Externí odkazy

[url=http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html]API třídy String v Javě[/url]

Kategorie:Datové typy

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top