Co je to řetězec?
Řetězec je posloupnost znaků. Řetězec C ++ je objekt třídy std :: string. Znaky jsou uložené sekvence bajtů s povoleným přístupem k jednomu znakovému bajtu.
Řetězce C ++ dynamicky přidělují paměť. V případě potřeby lze řetězci během běhu přidělit více paměti. Vzhledem k tomu, že neexistuje žádná alokace paměti, žádné plýtvání pamětí. Můžeme provádět různé operace s řetězci, včetně srovnání, zřetězení, převodu atd.
V tomto výukovém programu C ++ se naučíte:
- Co je to řetězec?
- Deklarování řetězců
- Řetězec znaků ve stylu C.
- std :: řetězec
- Přístup k hodnotám řetězce
- Funkce řetězce:
- strcpy ()
- strcat ()
- strlen ()
- strcmp ()
- Příklad:
Deklarování řetězců
C ++ podporuje dva typy řetězcových deklarací:
- Řetězec znaků ve stylu C.
- Typ třídy řetězce
Řetězec znaků ve stylu C.
Tento typ deklarace řetězce byl zaveden v programovacím jazyce C. C ++ to nadále podporuje. Je to jednoduše jednorozměrné pole znaků zakončené nulovým znakem (\ 0). Řetězec zakončený nulou má znaky, které tvoří řetězec, za nímž následuje null.
Zvažte níže uvedenou deklaraci řetězce:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Výše uvedená deklarace vytvoří řetězec, který tvoří slovo John. Slovo má 4 znaky, ale řetězec má velikost 5. Mezera navíc umožňuje držení nulového znaku.
Pomocí pravidla inicializace pole můžeme napsat výše uvedený příkaz takto:
char name[] = "John";
Všimněte si, že nemusíte umístit nulový znak na konec řetězcové konstanty. Kompilátor C ++ při inicializaci pole automaticky umístí '\ 0' na konec řetězce.
std :: řetězec
Standardní knihovna C ++ poskytuje třídu řetězců, která podporuje různé operace s řetězci. Je zapsán jako std :: string.
Chcete-li použít tuto třídu, musíme ji nejprve zahrnout do našeho pracovního prostoru pomocí preprocesoru #include, jak je znázorněno níže:
#include
Dále můžeme deklarovat náš řetězec pomocí klíčového slova řetězce. Například:
string name = "John";
Výše uvedený příkaz vytvoří řetězec s názvem name, který bude obsahovat hodnotu John.
Přístup k hodnotám řetězce
V C ++ můžeme přistupovat k hodnotám řetězce pomocí názvu řetězce. Například:
#includeusing namespace std;int main() {char name[5] = { 'J', 'o', 'h', 'n', '\0' };cout << "String value is: ";cout << name << endl;return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
- Deklarace řetězce znaků a pojmenování názvu. Řetězec uloží hodnotu John. Extra prostor uloží nulový znak.
- Tisk textu na konzole.
- Tisk hodnoty řetězce s názvem name na konzole.
- Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
- Konec těla funkce main ().
Zde je další příklad použití standardní třídy řetězců C ++:
#include#include using namespace std;int main() {string name = "Guru99";cout << "The name is : " << name << endl;return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně standardní třídy řetězce v našem kódu.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
- Deklarace řetězce a pojmenování názvu. Řetězec uloží hodnotu Guru99.
- Tisk hodnoty názvu řetězce spolu s nějakým textem na konzole.
- Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
- Konec těla funkce main ().
Funkce řetězce:
Často budete chtít manipulovat s řetězci. C ++ poskytuje širokou škálu funkcí, které k tomu můžete použít. Tyto funkce jsou definovány ve třídě CString, a proto je musíme používat do našeho kódu, abychom mohli funkce používat. Pojďme diskutovat o některých:
strcpy ()
Toto je funkce kopírování řetězců. Zkopíruje jeden řetězec do jiného řetězce.
Syntax:
strcpy(string1, string2);
Dva parametry funkce, řetězec1 a řetězec2, jsou řetězce. Funkce zkopíruje řetězec string1 do řetězce 1.
strcat ()
Toto je funkce zřetězení řetězců. Zřetězuje řetězce.
Syntax:
strcat(string1, string2);
Dva parametry funkce, řetězec1 a řetězec2, jsou řetězce, které mají být zřetězeny. Výše uvedená funkce zřetězí řetězec string2 na konec řetězce string1.
strlen ()
Toto je funkce délky řetězce. Vrátí délku řetězce předaného jako argument.
Syntax:
strnlen(string1)
Parametr string1 je název řetězce, jehož délku je třeba určit. Výše uvedená funkce vrátí délku řetězce string1.
strcmp ()
Toto je funkce porovnání řetězců. Používá se pro porovnání řetězců.
Syntax:
strcmp(string1, string2);
Výše uvedená funkce vrátí 0, pokud jsou řetězce string1 a string2 podobné, méně než 0, pokud string1
Příklad:
Následující příklad ukazuje, jak použít výše uvedené funkce řetězce:
#include#include using namespace std;int main() {char name1[10] = "Guru99";char name2[10] = "John";char name3[10];int len;strcpy(name3, name1);cout << "strcpy( name3, name1) : " << name3 << endl;strcat(name1, name2);cout << "strcat( name1, name2): " << name1 << endl;len = strlen(name1);cout << "strlen(name1) : " << len << endl;return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
- Včetně standardní třídy CString v našem kódu.
- Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
- Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
- Deklarování řetězce o délce 10 znaků a pojmenování name1. Řetězec uloží hodnotu Guru99.
- Deklarování řetězce o délce 10 znaků a pojmenování name2. Řetězec uloží hodnotu John.
- Deklarování řetězce o délce 10 znaků a pojmenování name3.
- Deklarace celočíselné proměnné s názvem len.
- Kopírování názvu řetězce1 do názvu řetězce3.
- Tisk hodnoty názvu řetězce1 spolu s nějakým textem na konzole. Mělo by tisknout Guru99.
- Zřetězení řetězců name2 na konec názvu řetězce1. Hodnota name1 je nyní Guru99John.
- Tisk hodnoty názvu řetězce1 spolu s nějakým textem na konzole. Mělo by tisknout Guru99John
- Určení délky řetězce s názvem name1 a přiřazení hodnoty délky k proměnné len.
- Tisk hodnoty proměnné len spolu s jiným textem na konzole.
- Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
- Konec těla funkce main ().
souhrn
- Řetězec je posloupnost znaků.
- Řetězce patří do standardní třídy řetězců v C ++.
- Můžeme deklarovat řetězce pomocí znakového řetězce ve stylu C nebo standardní třídy řetězců.
- Funkce strcpy () kopíruje jeden řetězec do druhého.
- Funkce strcat () spojuje dvě funkce.
- Funkce strlen () vrací délku funkce.
- Funkce strcmp () porovnává dva řetězce.