C++ Funkce řetězce: strcpy(), strcat(), strlen(), strcmp() Příklad

Co je to řetězec?

Řetězec je posloupnost znaků. A C++ string je objekt třídy std::string. Znaky jsou uložené sekvence bajtů s povoleným přístupem k jednomu znakovému bajtu.

C++ řetězce dynamicky alokují paměť. V případě potřeby lze řetězci během běhu přidělit více paměti. Protože nedochází k předběžnému přidělení paměti, nedochází k plýtvání pamětí. S řetězci můžeme provádět různé operace, včetně porovnávání, zřetězení, převodu atd.

Deklarace řetězců

C++ podporuje dva typy deklarací řetězců:

  • Ř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 C programovací jazyk. C++ nadále podporuje. Je to jednoduše jednorozměrné pole znaků zakončené znakem null (\0). Řetězec zakončený hodnotou null má znaky, které tvoří řetězec, za nimiž následuje nula.

Zvažte deklaraci řetězce uvedenou níže:

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 podržení znaku null.

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 znak null na konec řetězcové konstanty. The C++ kompilátor automaticky umístí '\0' na konec řetězce při inicializaci pole.

std::string

Standardní C++ knihovna poskytuje třídu string, která podporuje různé operace s řetězci. Zapisuje se 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<string>

Dále můžeme deklarovat náš řetězec pomocí klíčového slova string. 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

In C++, k hodnotám řetězce můžeme přistupovat pomocí názvu řetězce. Například:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

Výstup:

Přístup k hodnotám řetězce

Zde je snímek obrazovky kódu:

Přístup k hodnotám řetězce

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 konzole.
  2. Včetně jmenného prostoru std, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main(), do které má být přidána logika programu. { označuje začátek těla funkce main().
  4. Deklaruje řetězec znaků a pojmenuje jej. Řetězec uloží hodnotu John. Do mezery navíc bude uložen znak null.
  5. Tisk nějakého textu na konzoli.
  6. Tisk hodnoty řetězce s názvem name na konzole.
  7. Funkce main() by měla vrátit hodnotu, pokud program běží správně.
  8. Konec těla funkce main().

Zde je další příklad použití C++ standardní třída strun:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

Výstup:

Přístup k hodnotám řetězce

Zde je snímek obrazovky kódu:

Přístup k hodnotám řetězce

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 konzole.
  2. Včetně standardní třídy řetězců v našem kódu.
  3. Včetně jmenného prostoru std, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  4. Volání funkce main(), do které má být přidána logika programu. { označuje začátek těla funkce main().
  5. Deklarování řetězce a jeho pojmenování. Řetězec uloží hodnotu Guru99.
  6. Tisk hodnoty názvu řetězce vedle nějakého textu na konzole.
  7. Funkce main() by měla vrátit hodnotu, pokud program běží správně.
  8. Konec těla funkce main().

Funkce řetězců v C++

Často budete chtít manipulovat s řetězci. C++ poskytuje širokou škálu funkcí, které k tomu můžete využít. Tyto funkce jsou definovány ve třídě CString, proto ji musíme zahrnout do našeho kódu, abychom funkce mohli používat. Pojďme diskutovat o některých:

strcpy()

Toto je funkce kopírování řetězce. Zkopíruje jeden řetězec do jiného řetězce.

Syntaxe:

strcpy(string1, string2);

Dva parametry funkce, řetězec1 a řetězec2, jsou řetězce. Funkce zkopíruje řetězec string2 do string1.

strcat()

Toto je funkce řetězení řetězců. Zřetězuje řetězce.

Syntaxe:

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, který mu byl předán jako argument.

Syntaxe:

strnlen(string1)

Parametr řetězec1 je název řetězce, jehož délka má být určena. Výše uvedená funkce vrátí délku řetězce string1.

strcmp()

Toto je funkce porovnávání řetězců. Používá se pro porovnání řetězců.

Syntaxe:

strcmp(string1, string2);

Výše uvedená funkce vrátí 0, pokud jsou řetězce řetězec1 a řetězec2 podobné, menší než 0, pokud jsou řetězce1 řetězec2.

Příklad:

Následující příklad ukazuje, jak používat výše uvedené funkce řetězce:

#include <iostream>
#include <cstring>
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:

Funkce řetězců v C++

Zde je snímek obrazovky kódu:

Funkce řetězců v C++

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 konzole.
  2. Včetně standardní třídy CString v našem kódu.
  3. Včetně jmenného prostoru std, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  4. Volání funkce main(), do které má být přidána logika programu. { označuje začátek těla funkce main().
  5. Deklarace řetězce o 10 znacích a pojmenování name1. Řetězec uloží hodnotu Guru99.
  6. Deklarace řetězce o 10 znacích a pojmenování name2. Řetězec uloží hodnotu John.
  7. Deklarace řetězce o 10 znacích a pojmenování name3.
  8. Vyhlášení an celočíselná proměnná jménem len.
  9. Zkopírování řetězce name1 do řetězce name3.
  10. Tisk hodnoty řetězce name1 vedle nějakého textu na konzole. Mělo by to vytisknout Guru99.
  11. Zřetězení řetězců název2 na konec řetězce název1. Hodnota name1 je nyní Guru99John.
  12. Tisk hodnoty řetězce name1 vedle nějakého textu na konzole. Mělo by to vytisknout Guru99John
  13. Určení délky řetězce s názvem jméno1 a přiřazení hodnoty délky 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ěží správně.
  16. Konec těla funkce main().

Shrnutí

  • Řetězec je posloupnost znaků.
  • Řetězce patří do standardní třídy řetězců in C++.
  • Řetězce můžeme deklarovat pomocí znakového řetězce ve stylu C nebo standardní třídy řetězců.
  • Funkce strcpy() zkopíruje jeden řetězec do druhého.
  • Funkce strcat() zřetězí dva řetězce.
  • Funkce strlen() vrací délku řetězce.
  • Funkce strcmp() porovnává dva řetězce.