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.

  • 🔤 Osnovna definicija: Niz znakova je niz znakova; a C++ string je objekt klase std::string.
  • 🧱 Dvije deklaracije: C++ podržava nizove znakova u C stilu koji se završavaju s '\0' i sigurnijim tipom klase std::string.
  • 📥 Pristup vrijednostima: Nizovi se čitaju i ispisuju po imenu, što je demonstrirano i s nizovima znakova i s std::string.
  • 🛠️ Funkcije nizova: strcpy kopira, strcat spaja, strlen mjeri duljinu, a strcmp uspoređuje dva niza znakova.
  • ???? Obavezno zaglavlje: C string funkcije se nalaze u cstring zaglavlju, koje mora biti uključeno prije upotrebe.

C++ Funkcije nizova

Š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:

Pristup vrijednostima nizova

Evo snimke zaslona koda:

Pristup vrijednostima nizova

Code Objašnjenje:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  3. Pozivanje funkcije main() unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
  4. Deklaracija niza znakova i davanje imena name. Niz će pohraniti vrijednost John. Dodatni prostor će pohraniti nulti znak.
  5. Ispis nekog teksta na konzoli.
  6. Ispisivanje vrijednosti niza pod nazivom name na konzoli.
  7. Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
  8. 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:

Pristup vrijednostima nizova

Evo snimke zaslona koda:

Pristup vrijednostima nizova

Code Objašnjenje:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključivanje standardne klase nizova u naš kod.
  3. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  4. Pozivanje funkcije main() unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
  5. Deklarisanje niza znakova i davanje imena name. Niz znakova će pohraniti vrijednost. Guru99.
  6. Ispis vrijednosti naziva niza uz neki tekst na konzoli.
  7. Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
  8. 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:

Funkcije nizova u C++

Evo snimke zaslona koda:

Funkcije nizova u C++

Code Objašnjenje:

  1. Uključivanje iostream datoteke zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući i standard zaglavlje u našem kodu.
  3. Uključivanje std imenskog prostora kako bi se njegove klase i funkcije koristile bez pozivanja.
  4. Pozivanje funkcije main() unutar koje treba dodati logiku programa. { označava početak tijela funkcije main().
  5. Deklarisanje niza od 10 znakova i davanje imena ime1. Niz će pohraniti vrijednost Guru99.
  6. Deklaracija niza od 10 znakova i davanje imena name2. Niz će pohraniti vrijednost John.
  7. Deklaracija niza od 10 znakova i davanje imena name3.
  8. Izjavljivanje cjelobrojna varijabla imenom len.
  9. Kopiranje niza name1 u string name3.
  10. Ispis vrijednosti niza name3 uz neki tekst u konzoli. Trebalo bi ispisati Guru99.
  11. Spajanje niza name2 s krajem niza name1. Vrijednost name1 sada je Guru99Ivan.
  12. Ispis vrijednosti niza name1 uz neki tekst u konzoli. Trebalo bi ispisati Guru99Ivan.
  13. Određivanje duljine niza pod nazivom ime1 i dodjeljivanje vrijednosti duljine varijabli len.
  14. Ispis vrijednosti varijable len uz neki drugi tekst na konzoli.
  15. Funkcija main() trebala bi vratiti vrijednost ako program dobro radi.
  16. Kraj tijela funkcije main().

Pitanja i odgovori

Da. AI asistenti mogu refaktorirati polja znakova u std::string, ažurirati povezane funkcije i objasniti sigurnosne prednosti. Programeri bi i dalje trebali pregledati promjene za rubne slučajeve, veličine međuspremnika i namjeravano ponašanje.

Da. Alati umjetne inteligencije generiraju rađene primjere, objašnjavaju kako se strcpy i strcat ponašaju te označavaju rizike prepunjenja međuspremnika. To ubrzava razumijevanje, ali samostalno pokretanje koda ostaje najbolji način za potvrdu ponašanja.

std::string dinamički upravlja memorijom i pruža ugrađene operacije poput spajanja i usporedbe. C-stilski nizovi su fiksni znakovni nizovi koji završavaju s '\0', zahtijevaju ručno rukovanje memorijom i skloniji su greškama.

Mogu uzrokovati prelijevanje međuspremnika ako je odredišni niz premalen. Sigurnije alternative uključuju strncpy, strncat ili jednostavno korištenje std::string operacija, koje automatski upravljaju memorijom i smanjuju te rizike.

Sažmite ovu objavu uz: