98
Začínáme programovat v jazyku C++
Podívejme se však znovu na zdrojový kód funkce zadost(). Zde se sice ne zcela zjevně, ale přece jen opakujeme. Číst prvky pole bychom měli pokud možno v cyklu. Abychom ho ovšem mohli použít, potřebujeme také uložit do pole vypisované znakové řetězce.
Poznámka Všimněte si, že ve funkci zadost jsme do prvků pole datum uložili hodnoty a ty jsme pak v jiné funkci používali. Jinak řečeno, změnou formálního parametru typu pole jsme změnili skutečný parametr. Připomeňme si, že to pro parametry typů, které jsme používali v předchozích kapitolách, neplatilo.
7.5
Typ string
Jazyk C++ nabízí hned dva nástroje pro práci se znakovými řetězci: pole znaků a typ string. Pro pole řetězců bychom však potřebovali pole složené z polí znaků (tomu říkáme dvourozměrné pole). To C++ samozřejmě umožňuje, ale zatím se tomu vyhneme, neboť práce s typem string je jednodušší. Typ string je deklarován v hlavičkovém souboru string (bez přípony) a představuje posloupnost znaků spolu s rozsáhlou sadou nástrojů pro operace s ní. Mimo jiné: z K jednotlivým znakům můžeme přistupovat podobně jako k prvkům pole pomocí indexování. Prvky, které tvoří proměnnou typu string, jsou proměnné typu char a počáteční prvek – počáteční znak – má index 0, podobně jako je tomu u polí. z Délku řetězce uloženého v proměnné x typu string, tedy počet znaků v něm, zjistíme zápisem x.length() nebo x.size(). z Pro instance typu string jsou definovány relační operátory == a !=. Dva řetězce jsou si rovny, když obsahují na stejných místech stejné znaky. z Pro instance (tj. proměnné) typu string jsou definovány i operátory <, >, <= a >=. Ovšem pozor, nejde o abecední porovnávání, ale o tzv. lexikografické porovnávání podle kódových čísel znaků; o tom si povíme později. z Operátor += umožňuje připojit k řetězci na konec nový znak nebo celý řetězec. z Operátory << a >> slouží k výstupu, resp. ke vstupu řetězců. Chceme-li v programu zapsat řetězcovou konstantu typu string, uzavřeme potřebnou posloupnost znaků do uvozovek a za uzavírací uvozovky připojíme malé s. To znamená, že např. zápisem auto pozdrav = "Nazdar, lidi"s;
jsme deklarovali proměnnou typu string.
Poznámka Standardní knihovna jazyka C++ ve skutečnosti obsahuje šablonu, která se nazývá basic_string. Tato šablona má parametr, který určuje typ, z něhož chceme řetězce vytvářet. Pro typ řetězců složených ze znaků typu char, tedy pro basic_string<char>, je v knihovně zaveden alias string; pro typ řetězců složených ze znaků typu wchar_t, tedy pro basic_string<wchar_t>, je v knihovně zaveden alias wstring. (O deklaraci aliasu, tedy alternativního jména pro datový typ, jsme hovořili v oddílu 5.9.)