Home >> C++ návod >> Práce s textovými řetězci

Práce s textovými řetězci

V dnešní lekci využijeme znalostí z předchozí lekce, kde jsme se naučili pracovat se strukturovanými proměnnými typu pole. Ukážeme si totiž, že pole nemusí být určeno pouze pro číselné hodnoty, ale i pro znaky.

Nejprve si však udělejme malé opakování. Již víme, že pokud chceme do paměti uložit nějaký znak popřípadě celý řetězec znaků, použijeme k tomuto účelu proměnné typu char nebo string. Například:

char znak = 'k';
string veta = "Dnes je ale krasny den!";

Do proměnné typu char lze uložit pouze jeden znak, který uvádíme mezi dva apostrofy. Naopak do proměnné typu string můžeme uložit libovolné řetězce znaků. Pojďme se na tyto řetězce podívat blíže.

Každý řetězec je ve skutečnosti složen z jednotlivých znaků. Proto můžeme větu z předchozího příkladu uložit do paměti také pomocí pole:

char nova_veta[] = "Dnes je ale krasny den!";

Tímto zápisem jsme si vytvořili pole znaků (charů), kde do každého "chlívku" uložíme právě jeden znak. Výhodou je, že nemusíme znaky do pole vkládat po jednom, jako je to v této ukázce:

char nova_veta[] = {'s', 'l', 'o', 'v', 'o', '\0'};
Poznámka: Poslední znak \0 (zpětné lomítko a nula) je ukončujícím znakem.

Ale můžeme je zapsat jako řetězec:

char nova_veta[] = "slovo";

Tento řetězec bude automaticky rozdělen na jednotlivé znaky a navíc bude obsahovat i ukončovací znak (\0).

Dále můžeme vytvořit pole znaků, které má určitý rozměr:

char jmeno[20] = "Pepe";

Tento zápis vytvoří v paměti pole pro uložení až 20 znaků. Tato hodnota je maximalní a více znaků než 20 do pole nepůjde uložit. Naopak ale můžeme uložit méně než 20 znaků, tak jak je to například v této ukázce.

Užití

Při práci s poli znaků, můžeme stejně jako u proměnných typu string, používat funkce pro načtení a výpis tedy cin a cout. Například:

char jmeno[20];
cin >> jmeno;
cout << "Zadal jsi: " << jmeno;

Co ovšem používat nemůžeme, je přiřazovací příkaz. Například:

char jmeno[20];

jmeno = "Adam";
jmeno[] = "Adam";
jmeno[] = {'A', 'd', 'a', 'm', '\0'};

Všechny tyto "pokusy" o přiřazení řetězce Adam do pole jmenopovedou k chybě. Proč tomu tak je, lépe pochopíme až v další lekci, kde se budeme zabývat ukazateli.

C++ Návod
Úvod do C++
Volba programu
Struktura programu
Proměnné
Konstanty
Operátory
Vstup a výstup
Řídící struktury
Funkce - 1.část
Funkce - 2.část
Pole
Práce s textovými řetězci
Ukazatele - 1.část
Ukazatele - 2.část
Dynamické proměnné
Datové struktury
©2008 - 2011 Klikzone.cz
Ráj aut - inzerce nových i ojetých aut