Textový řetězec

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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

Typy textového řetězce[editovat | editovat zdroj]

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

Fyzická implementace textového řetězce[editovat | editovat zdroj]

  • 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ř. typ String v Pascalu)

Definice řetězce v programu[editovat | editovat zdroj]

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. 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 zavolat proměnnou. Příklad z jazyka PHP:

<?php

$retezec = "já jsem nějaký řetězec a můžu obsahovat všemožné znaky, dokonce i ty, které nejsou v ASCII tabulce, ale jen v UNICODE. Můžu mít libovolnou velikost a jsem reprezentován dynamicky, podle velikosti paměti.";

?>

Tisk řetězce[editovat | editovat zdroj]

V nízkoúrovňových jazycích se řetězec tiskne voláním funkce (puts, printf, fprintf), v aplikovaných jazycích (na př. 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 << retezec[0]; //vypis prvního znaku (jen pro neprazdny retezec)

Celý řetězec lze vypsat v aplikovaných jazycích, např. v PHP:

<?php

echo $retezec; //vypise retezec

?>

Operace s textovým řetězcem[editovat | editovat zdroj]

  • 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í, concatenation) 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[editovat | editovat zdroj]

  • 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)

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]