C++ Funkcja łańcuchowa: strcpy(), strcat(), strlen(), strcmp() Przykład
Co to jest ciąg?
Ciąg to ciąg znaków. A C++ string jest obiektem klasy std::string. Znaki są przechowywanymi sekwencjami bajtów z dozwolonym dostępem do pojedynczego bajtu znaku.
C++ ciągi przydzielają pamięć dynamicznie. Więcej pamięci może zostać przydzielone ciągowi w czasie wykonywania, jeśli jest to potrzebne. Ponieważ nie ma wstępnego przydziału pamięci, nie ma marnotrawstwa pamięci. Możemy wykonywać różne operacje na ciągach, w tym porównania, konkatenację, konwersję itp.
Deklarowanie ciągów
C++ obsługuje dwa typy deklaracji ciągów:
- Ciąg znaków w stylu C
- Typ klasy string
Ciąg znaków w stylu C
Ten typ deklaracji ciągu został wprowadzony w język programowania C. C++ nadal go wspiera. Jest to po prostu jednowymiarowa tablica znaków zakończona znakiem null (\0). Ciąg zakończony znakiem null składa się ze znaków, po których następuje wartość null.
Rozważ deklarację ciągu podaną poniżej:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Powyższa deklaracja tworzy ciąg znaków tworzący słowo John. Słowo ma 4 znaki, ale ciąg znaków ma rozmiar 5. Dodatkowa spacja pozwala na umieszczenie znaku null.
Korzystając z reguły inicjalizacji tablicy, możemy zapisać powyższą instrukcję w następujący sposób:
char name[] = "John";
Pamiętaj, że nie musisz umieszczać znaku null na końcu stałej łańcuchowej. The C++ kompilator automatycznie umieści „\0” na końcu ciągu podczas inicjowania tablicy.
std::string
Średnia C++ biblioteka udostępnia klasę string, która obsługuje różne operacje string. Jest ona napisana jako std::string.
Aby użyć tej klasy, musimy najpierw włączyć ją do naszego obszaru roboczego za pomocą preprocesora #include, jak pokazano poniżej:
#include<string>
Następnie możemy zadeklarować nasz ciąg znaków za pomocą słowa kluczowego string. Na przykład:
string name = "John";
Powyższa instrukcja utworzy ciąg o nazwie name, w którym będzie przechowywana wartość John.
Dostęp do wartości ciągu
In C++, możemy uzyskać dostęp do wartości ciągu za pomocą nazwy ciągu. Na przykład:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu. Umożliwi nam to odczytywanie i zapisywanie na konsoli.
- Łącznie z przestrzenią nazw std, aby móc korzystać z jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main(), wewnątrz której należy dodać logikę programu. Znak { oznacza początek treści funkcji main().
- Deklarowanie ciągu znaków i nadanie mu nazwy name. Ciąg będzie przechowywać wartość John. Dodatkowa spacja przechowuje znak null.
- Drukowanie tekstu na konsoli.
- Wydrukowanie wartości ciągu o nazwie name na konsoli.
- Funkcja main() powinna zwrócić wartość, jeśli program działa prawidłowo.
- Koniec treści funkcji main().
Oto kolejny przykład użycia C++ standardowa klasa stringów:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu. Umożliwi nam to odczytywanie i zapisywanie na konsoli.
- Włączenie standardowej klasy string do naszego kodu.
- Łącznie z przestrzenią nazw std, aby móc korzystać z jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main(), wewnątrz której należy dodać logikę programu. Znak { oznacza początek treści funkcji main().
- Deklarowanie ciągu znaków i nadanie mu nazwy name. Ciąg będzie przechowywać wartość Guru99.
- Drukowanie wartości nazwy ciągu obok tekstu na konsoli.
- Funkcja main() powinna zwrócić wartość, jeśli program działa prawidłowo.
- Koniec treści funkcji main().
Funkcje ciągów w C++
Często będziesz chciał manipulować ciągami znaków. C++ zapewnia szeroką gamę funkcji, które można w tym celu wykorzystać. Funkcje te są zdefiniowane w klasie CString, dlatego aby móc z nich skorzystać, musimy zawrzeć je w naszym kodzie. Omówmy niektóre:
strcpy()
To jest funkcja kopiowania ciągu. Kopiuje jeden ciąg do innego ciągu.
Składnia:
strcpy(string1, string2);
Dwa parametry funkcji, string1 i string2, są stringami. Funkcja skopiuje string string2 do string1.
strcat()
To jest funkcja łączenia ciągów. Łączy ciągi znaków.
Składnia:
strcat(string1, string2);
Dwa parametry funkcji, ciąg1 i ciąg2, to ciągi, które należy połączyć. Powyższa funkcja połączy ciąg ciąg2 z końcem ciągu ciąg1.
stren()
To jest funkcja długości łańcucha. Zwraca długość łańcucha przekazanego mu jako argument.
Składnia:
strnlen(string1)
Parametr ciąg1 jest nazwą ciągu, którego długość ma zostać określona. Powyższa funkcja zwróci długość ciągu string1.
strcmp()
To jest funkcja porównywania ciągów. Służy do porównywania ciągów.
Składnia:
strcmp(string1, string2);
Powyższa funkcja zwróci 0, jeśli ciągi ciąg1 i ciąg2 są podobne, mniej niż 0, jeśli ciąg1 ciąg2.
Przykład:
Poniższy przykład pokazuje, jak używać powyższych funkcji łańcuchowych:
#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; }
Wyjście:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu. Umożliwi nam to odczytywanie i zapisywanie na konsoli.
- Włączenie standardowej klasy CString do naszego kodu.
- Łącznie z przestrzenią nazw std, aby móc korzystać z jej klas i funkcji bez wywoływania jej.
- Wywołanie funkcji main(), wewnątrz której należy dodać logikę programu. Znak { oznacza początek treści funkcji main().
- Zadeklarowanie ciągu 10 znaków i nadanie mu nazwy name1. Ciąg będzie przechowywać wartość Guru99.
- Zadeklarowanie ciągu 10 znaków i nadanie mu nazwy name2. Ciąg będzie przechowywać wartość John.
- Zadeklarowanie ciągu 10 znaków i nadanie mu nazwy name3.
- Deklarowanie zmienna całkowita imieniem Len.
- Kopiowanie ciągu nazwa1 do ciągu nazwa3.
- Drukowanie wartości ciągu nazwa1 obok tekstu na konsoli. Powinien wydrukować Guru99.
- Łączenie ciągów nazwa2 na końcu ciągu nazwa1. Wartość name1 wynosi teraz Guru99John.
- Drukowanie wartości ciągu nazwa1 obok tekstu na konsoli. Powinien wydrukować Guru99John
- Określenie długości ciągu o nazwie nazwa1 i przypisanie wartości długości do zmiennej len.
- Drukowanie wartości zmiennej len wraz z innym tekstem na konsoli.
- Funkcja main() powinna zwrócić wartość, jeśli program działa prawidłowo.
- Koniec treści funkcji main().
Podsumowanie
- Ciąg to ciąg znaków.
- Stringi należą do standardowej klasy stringów w C++.
- Możemy deklarować ciągi znaków, używając ciągu znaków w stylu C lub standardowej klasy ciągów.
- Funkcja strcpy() kopiuje jeden ciąg do drugiego.
- Funkcja strcat() łączy dwa ciągi znaków.
- Funkcja strlen() zwraca długość ciągu znaków.
- Funkcja strcmp() porównuje dwa ciągi znaków.