C++ Funkcija niza znakova: strcpy(), strcat(), strlen(), strcmp()
โก Pametni saลพetak
C++ Funkcije za rad s nizovima znakova kao ลกto su strcpy, strcat, strlen i strcmp omoguฤuju programima kopiranje, spajanje, mjerenje i usporeฤivanje teksta. Ovaj resurs objaลกnjava ลกto je niz znakova, kako deklarirati nizove u C stilu i std::string, pristupiti njihovim vrijednostima i primijeniti osnovne funkcije za rad s nizovima znakova s โโprimjerima.

ล to je String?
String je niz znakova. A C++ String je objekt klase std::string. Znakovi se pohranjuju kao nizovi bajtova, s dopuลกtenim pristupom jednom znaku bajta.
C++ Nizovi dinamiฤki dodjeljuju memoriju. Tijekom izvoฤenja niza moลพe se po potrebi dodijeliti viลกe memorije. Buduฤi da nema prethodne dodjele memorije, nema rasipanja memorije. Moลพemo izvoditi razne operacije na nizovima, ukljuฤujuฤi usporedbu, spajanje, pretvorbu itd.
Deklariranje nizova
C++ podrลพava dvije vrste deklaracija nizova:
- Niz znakova u stilu C
- Tip klase niza
Niz znakova u stilu C
Ova vrsta deklaracije niza znakova uvedena je u C programski jezik. C++ i dalje ga podrลพava. To je jednostavno jednodimenzionalni niz znakova koji zavrลกava null znakom (\0). Niz koji zavrลกava null znakom sadrลพi znakove koji ฤine niz, a nakon njih slijedi null.
Razmotrite donju deklaraciju niza:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Gornja deklaracija stvara niz znakova koji tvori rijeฤ John. Rijeฤ ima 4 znaka, ali niz znakova ima veliฤinu 5. Dodatni prostor omoguฤuje drลพanje null 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 null znak na kraj string konstante. C++ kompajler ฤe automatski postaviti '\0' na kraj niza prilikom inicijalizacije niza.
std::string
Norma C++ Knjiลพnica pruลพa klasu stringova koja podrลพava razne operacije s stringovima. Napisana je kao std::string.
Da bismo koristili ovu klasu, prvo je moramo ukljuฤiti u naลก radni prostor pomoฤu #include predprocesora 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:
Code Objaลกnjenje:
- 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.
- Pozivanje funkcije main() 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:
Code Objaลกnjenje:
- 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.
- Pozivanje funkcije main() unutar koje treba dodati logiku programa. { oznaฤava poฤetak tijela funkcije main().
- Deklarisanje niza znakova i davanje imena name. Niz znakova ฤ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++ pruลพa ลกirok raspon funkcija koje moลพete koristiti za to. Ove funkcije su definirane u zaglavlje, pa ga moramo ukljuฤiti u naลก kod kako bismo mogli koristiti funkcije. Razmotrimo neke:
strcpy()
Ovo je funkcija kopiranja niza. Kopira jedan niz u drugi niz.
Sintaksa:
strcpy(string1, string2);
Dva parametra funkcije, string1 i string2, su stringovi. 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 stringovi koji se spajaju. Gornja funkcija ฤe spojiti string string2 s krajem stringa string1.
strlen()
Ovo je funkcija duljine niza. Vraฤa duljinu niza koji mu je proslijeฤen kao argument.
Sintaksa:
strlen(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 ฤe vratiti 0 ako su nizovi string1 i string2 sliฤni, manji od 0 ako je string1 < string2 i veฤi od 0 ako je string1 > string2.
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:
Code Objaลกnjenje:
- Ukljuฤivanje iostream datoteke zaglavlja u naลก kod. Omoguฤit ฤe nam ฤitanje s konzole i pisanje na nju.
- Ukljuฤujuฤi i standard zaglavlje u naลกem kodu.
- Ukljuฤivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
- Pozivanje funkcije main() unutar koje treba dodati logiku programa. { oznaฤava poฤetak tijela funkcije main().
- Deklarisanje niza od 10 znakova i davanje imena ime1. 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.
- Ispis vrijednosti niza name3 uz neki tekst u konzoli. Trebalo bi ispisati Guru99.
- Spajanje niza name2 s krajem niza name1. Vrijednost name1 sada je Guru99Ivan.
- Ispis vrijednosti niza name1 uz neki tekst u konzoli. Trebalo bi ispisati Guru99Ivan.
- Odreฤivanje duljine niza pod nazivom ime1 i dodjeljivanje vrijednosti duljine 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().




