Řetězce v C ++: strcpy (), strcat (), strlen (), strcmp () PŘÍKLADY

Obsah:

Anonim

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:

#include using 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:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
  4. Deklarace řetězce znaků a pojmenování názvu. Řetězec uloží hodnotu John. Extra prostor uloží nulový znak.
  5. Tisk textu na konzole.
  6. Tisk hodnoty řetězce s názvem name na konzole.
  7. Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
  8. 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:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně standardní třídy řetězce v našem kódu.
  3. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  4. Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
  5. Deklarace řetězce a pojmenování názvu. Řetězec uloží hodnotu Guru99.
  6. Tisk hodnoty názvu řetězce spolu s nějakým textem na konzole.
  7. Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
  8. 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 string2.

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:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně standardní třídy CString v našem kódu.
  3. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  4. Volání funkce main (), do které by měla být přidána logika programu. {Označuje začátek těla funkce main ().
  5. Deklarování řetězce o délce 10 znaků a pojmenování name1. Řetězec uloží hodnotu Guru99.
  6. Deklarování řetězce o délce 10 znaků a pojmenování name2. Řetězec uloží hodnotu John.
  7. Deklarování řetězce o délce 10 znaků a pojmenování name3.
  8. Deklarace celočíselné proměnné s názvem len.
  9. Kopírování názvu řetězce1 do názvu řetězce3.
  10. Tisk hodnoty názvu řetězce1 spolu s nějakým textem na konzole. Mělo by tisknout Guru99.
  11. Zřetězení řetězců name2 na konec názvu řetězce1. Hodnota name1 je nyní Guru99John.
  12. Tisk hodnoty názvu řetězce1 spolu s nějakým textem na konzole. Mělo by tisknout Guru99John
  13. Určení délky řetězce s názvem name1 a přiřazení hodnoty délky k proměnné len.
  14. Tisk hodnoty proměnné len spolu s jiným textem na konzole.
  15. Funkce main () by měla vrátit hodnotu, pokud program běží dobře.
  16. 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.