C++ Funkcija niza: strcpy(), strcat(), strlen(), strcmp() Primjer
Što je String?
String je niz znakova. A C++ string je objekt klase std::string. Znakovi su pohranjeni nizovi bajtova s dopuštenim pristupom bajtu jednog znaka.
C++ nizovi dinamički dodjeljuju memoriju. Više memorije može se dodijeliti nizu tijekom vremena izvođenja ako je potrebno. Budući da nema predraspodjele memorije, nema rasipanja memorije. Na nizovima možemo izvoditi različite operacije, uključujući usporedbe, ulančavanje, konverziju itd.
Deklariranje nizova
C++ podržava dvije vrste deklaracija nizova:
- Niz znakova u stilu C
- Tip klase niza
Niz znakova u stilu C
Ovaj tip deklaracije niza uveden je u C programski jezik. C++ nastavlja ga podržavati. To je jednostavno jednodimenzionalni niz znakova koji završava nultim znakom (\0). Niz koji završava nullom ima znakove koji čine niz nakon kojih slijedi null.
Razmotrite donju deklaraciju niza:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Gornja deklaracija stvara niz koji tvori riječ John. Riječ ima 4 znaka, ali niz ima veličinu 5. Dodatni prostor dopušta držanje nultog znaka.
Koristeći pravilo inicijalizacije polja, možemo napisati gornju izjavu na sljedeći način:
char name[] = "John";
Imajte na umu da ne morate staviti znak null na kraj konstante niza. The C++ kompajler će automatski postaviti '\0' na kraj niza prilikom inicijalizacije niza.
std::string
Norma C++ biblioteka pruža klasu nizova koja podržava razne operacije nizova. Zapisuje se kao std::string.
Da bismo koristili ovu klasu, prvo je moramo uključiti u naš radni prostor pomoću pretprocesora #include kao što je prikazano u nastavku:
#include<string>
Zatim možemo deklarirati naš niz koristeći ključnu riječ string. Na primjer:
string name = "John";
Gornja naredba stvorit će niz imena name koji će sadržavati vrijednost John.
Pristup vrijednostima nizova
In C++, možemo pristupiti vrijednostima niza koristeći naziv niza. Na primjer:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
- Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
- Poziv main() funkcije unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
- Deklaracija niza znakova i davanje imena name. Niz će pohraniti vrijednost John. Dodatni prostor će pohraniti nulti znak.
- Ispis nekog teksta na konzoli.
- Ispisivanje vrijednosti niza pod nazivom name na konzoli.
- Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
- Kraj tijela funkcije main().
Evo još jednog primjera korištenja C++ standardna klasa niza:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
- Uključivanje standardne klase nizova u naš kod.
- Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
- Poziv main() funkcije unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
- Deklariranje niza i davanje imena name. Niz će pohraniti vrijednost Guru99.
- Ispis vrijednosti naziva niza uz neki tekst na konzoli.
- Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
- Kraj tijela funkcije main().
Funkcije nizova u C++
Često ćete željeti manipulirati žicama. C++ nudi širok raspon funkcija koje možete koristiti za to. Ove su funkcije definirane u klasi CString, stoga je moramo uključiti u naš kod kako bismo koristili funkcije. Raspravljajmo o nekima:
strcpy()
Ovo je funkcija kopiranja niza. Kopira jedan niz u drugi niz.
Sintaksa:
strcpy(string1, string2);
Dva parametra funkcije, string1 i string2, su nizovi. Funkcija će kopirati string string2 u string1.
strcat()
Ovo je funkcija spajanja nizova. Spaja nizove.
Sintaksa:
strcat(string1, string2);
Dva parametra funkcije, string1 i string2 su nizovi koje treba spojiti. Gornja funkcija spojit će niz string2 na kraj niza string1.
strlen()
Ovo je funkcija duljine niza. Vraća duljinu niza koji mu je proslijeđen kao argument.
Sintaksa:
strnlen(string1)
Parametar string1 je naziv niza čiju duljinu treba odrediti. Gornja funkcija vratit će duljinu niza string1.
strcmp()
Ovo je funkcija usporedbe nizova. Koristi se za usporedbu nizova.
Sintaksa:
strcmp(string1, string2);
Gornja funkcija vratit će 0 ako su nizovi string1 i string2 slični, manje od 0 ako su string1 niz2.
Primjer:
Sljedeći primjer pokazuje kako koristiti gornje funkcije niza:
#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; }
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
- Uključivanje standardne CString klase u naš kod.
- Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
- Poziv main() funkcije unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
- Deklaracija niza od 10 znakova i davanje imena name1. Niz će pohraniti vrijednost Guru99.
- Deklaracija niza od 10 znakova i davanje imena name2. Niz će pohraniti vrijednost John.
- Deklaracija niza od 10 znakova i davanje imena name3.
- Izjavljivanje cjelobrojna varijabla imenom len.
- Kopiranje niza name1 u string name3.
- Ispisivanje vrijednosti niza name1 pored nekog teksta na konzoli. Trebao bi ispisati Guru99.
- Spajanje nizova name2 na kraj niza name1. Vrijednost name1 sada je Guru99John.
- Ispisivanje vrijednosti niza name1 pored nekog teksta na konzoli. Trebao bi ispisati Guru99John
- Određivanje duljine niza imena name1 i dodjeljivanje vrijednosti length varijabli len.
- Ispis vrijednosti varijable len uz neki drugi tekst na konzoli.
- Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
- Kraj tijela funkcije main().
rezime
- String je niz znakova.
- Nizovi pripadaju standardnoj klasi nizova u C++.
- Stringove možemo deklarirati pomoću znakovnog niza u stilu C ili standardne klase nizova.
- Funkcija strcpy() kopira jedan niz u drugi.
- Funkcija strcat() spaja dva niza.
- Funkcija strlen() vraća duljinu niza.
- Funkcija strcmp() uspoređuje dva niza.