Funkcie length a empty
Rovnako ako funkcia size
, vrácia počet bytov v reťazci. To znamená, že je na vás, ktorú funkciu uprednostníte, či už funkciu length
alebo size
. Samozejme si ukážeme dve príklady na funkciu length
.
Poznámka šéfredaktora: Počet bytů je roven počtu znaků jen u řetězců v klasických kódováních (ASCII, ISO 8859-2 apod.). Pokud použijete jiné kódování, například UTF-8, může být počet bytů větší než počet znaků. Pro tato kódování se používají jiné řetězcové třídy.
Pri funkcii empty
by ste už mali poznať to, že funkcia testuje, či je reťazec prázdny. Hodí sa všade tam, kde potrebujete testovať napr. či užívateľ zadal vôbec niečo a pod. Funkcia vrácia true
, ak je hodnota dĺžky reťazca 0, inak false
.
1. príklad: Jednoduchý program na funkciu length a empty
#include <iostream> // hlavickové súbory #include <string> using namespace std; // priestor mien int main() // hlavná funkcia main { string retazec; cout << "Zadaj akekolvek slovo!\n"; cin >> retazec; if (retazec.empty()) // test či užívateľ niečo napísal { cout << "Ale ved ty si nic nezadal! Za trest si ma spust este raz!"; return 0; } cout << "Vas zvoleny retazec je: " << retazec << "\nVelkost vasho retazca je: " << retazec.length(); // výpis return 0; // koniec programu }
Výsledok programu:
Zadaj akekolvek slovo! Jupiter Vas zvoleny retazec je: Jupiter Velkost vasho retazca je: 7
2. príklad: Program zameraný na funkciu length
#include <iostream> // hlavickové súbory #include <string> using namespace std; // priestor mien int main() // hlavná funkcia main { string retazec = " "; for (size_t i = 0; i < retazec.length() / 2; i++) { for (size_t j = retazec.length()-1; j >= retazec.length() / 2; j--) { retazec[i] = 'a' + i; retazec[j] = 'z' - 5 + j; } } cout << retazec; // vypis na obrazovku return 0; // koniec programu }
Výsledok programu:
abcxyz
Funkcia at
Ak by ste urychlene potrebovali vypísať nejaký znak z reťazca, nato slúži funkcia at. Ako argument dávame pozíciu znaku, ktorý chceme získať. Nezabudníte, že pozícia v reťazci začína od 0. Poďme sa pozrieť na pár príkladov jej využitia.
3. príklad: Skúška funkcie at
#include <iostream> // hlavickové súbory #include <string> using namespace std; // priestor mien int main() // hlavná funkcia main { string retazec = "adactapalatalamapalatmpatpo0er"; cout << retazec.at(0)<<retazec.at(8)<<retazec.at(14)<<retazec.at(15)<<" "<<retazec.at(21)<<retazec.at(23)<<retazec.at(24)<<retazec.at(28)<<retazec.at(29); return 0; // koniec programu }
Výsledok programu:
alma mater
4. príklad: Vypíšeme všetky znaky v reťazci
#include <iostream> // hlavickové súbory #include <string> using namespace std; // priestor mien int main() // hlavná funkcia main { string retazec = "Mam rad hviezdicky na oblohe, su tak vzdialene a zahadne a to ma naplna melancholickym stastim."; for (size_t i = 0; i < retazec.size(); i++) { cout << retazec.at(i) << " "; } return 0; // koniec programu }
Výsledok programu:
M a m r a d h v i e z d i c k y n a o b l o h e , s u t a k v z d i a l e n e a z a h a d n e a t o m a n a p l n a m e l a n c h o l i c k y m s t a s t i m .
5. príklad: Alternatívny spôsob vyhľadavania napr. slov v reťazci. Samozrejme, sú aj omnoho lepšie vyhľadávacie funkcie, príklad slúži ako zaujímavosť
#include <iostream> // hlavickové súbory #include <string> using namespace std; // priestor mien int main() // hlavná funkcia main { string retazec = "Vzdy ked vstanem, som rad ze zijem a dycham."; for (size_t i = 0; i < retazec.size(); i++) { if (retazec[i] == 'z' && retazec[i+1] == 'i' && retazec[i+2] == 'j' && retazec[i+3] && 'e' && retazec[i+4] == 'm') { cout << retazec.at(i) << retazec.at(i+1) << retazec.at(i+2) << retazec.at(i+3) << retazec.at(i+4); } } return 0; // koniec programu }
Výsledok programu:
zijem