C++ Stringifunktsioon: strcpy(), strcat(), strlen(), strcmp()

โšก Nutikas kokkuvรตte

C++ Stringifunktsioonid nagu strcpy, strcat, strlen ja strcmp vรตimaldavad programmidel teksti kopeerida, รผhendada, mรตรตta ja vรตrrelda. See ressurss selgitab, mis on string, kuidas deklareerida C-stiilis ja std::string stringe, kuidas nende vรครคrtustele juurde pรครคseda ja pรตhilisi stringifunktsioone nรคidete abil rakendada.

  • ๐Ÿ”ค Pรตhidefinitsioon: String on mรคrkide jada; a C++ string on klassi std::string objekt.
  • ๐Ÿงฑ Kaks deklaratsiooni: C++ toetab C-stiilis mรคrgimassiive, mis lรตpevad '\0'-ga, ja turvalisemat std::string klassitรผรผpi.
  • ๐Ÿ“ฅ Vรครคrtustele juurdepรครคs: Stringe loetakse ja prinditakse nime jรคrgi, mida demonstreeritakse nii char-massiivide kui ka std::string abil.
  • ๐Ÿ› ๏ธ Stringifunktsioonid: strcpy kopeerib, strcat liitab, strlen mรตรตdab pikkust ja strcmp vรตrdleb kahte stringi.
  • ๐Ÿ“ฆ Pรคis on nรตutav: C stringi funktsioonid asuvad cstringi pรคises, mis tuleb enne kasutamist lisada.

C++ Stringi funktsioonid

Mis on string?

String on mรคrkide jada. A C++ string on klassi std::string objekt. Tรคhemรคrgid salvestatakse baitide jadadena, kusjuures juurdepรครคs on lubatud รผhele tรคhemรคrgibaidile.

C++ Stringid eraldavad mรคlu dรผnaamiliselt. Vajadusel saab stringile kรคitusaja jooksul rohkem mรคlu eraldada. Kuna mรคlu eelnevalt ei eraldata, ei toimu mรคlu raiskamist. Stringidega saab teha mitmesuguseid toiminguid, sealhulgas vรตrdlemist, liitmist, teisendamist jne.

Stringide deklareerimine

C++ toetab kahte tรผรผpi stringideklaratsioone:

  • C-stiilis mรคrgistring
  • Stringiklassi tรผรผp

C-stiilis mรคrgistring

Seda tรผรผpi stringideklaratsioon vรตeti kasutusele aastal C programmeerimiskeel. C++ toetab seda jรคtkuvalt. See on lihtsalt รผhemรตรตtmeline tรคhemรคrkide massiiv, mis lรตpeb nullmรคrgiga (\0). Nullmรคrgiga lรตppev string sisaldab stringi moodustavaid mรคrke, millele jรคrgneb null.

Mรตelge allpool toodud stringi deklaratsioonile:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

รœlaltoodud deklaratsioon loob stringi, mis moodustab sรตna John. Sรตnas on 4 tรคhemรคrki, aga stringi suurus on 5. Lisaruum vรตimaldab nullmรคrgi hoidmist.

Massiivi initsialiseerimise reeglit kasutades saame รผlaltoodud avalduse kirjutada jรคrgmiselt:

char name[] = "John";

Pane tรคhele, et stringikonstandi lรตppu ei pea nullmรคrki panema. C++ kompilaator asetab massiivi lรคhtestamisel automaatselt stringi lรตppu '\0'.

std::string

Standard C++ teek pakub stringiklassi, mis toetab mitmesuguseid stringioperatsioone. See kirjutatakse kujul std::string.

Selle klassi kasutamiseks peame selle kรตigepealt oma tรถรถruumi lisama, kasutades eelprotsessorit #include, nagu allpool nรคidatud:

#include <string>

Jรคrgmisena saame stringi mรคrksรตna abil oma stringi deklareerida. Nรคiteks:

string name = "John";

รœlaltoodud lause loob stringi nimega nimi, mis sisaldab vรครคrtust John.

Juurdepรครคs stringi vรครคrtustele

In C++, pรครคseme stringi vรครคrtustele juurde stringi nime kasutades. Nรคiteks:

#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รคljund:

Juurdepรครคs stringi vรครคrtustele

Siin on koodi ekraanipilt:

Juurdepรครคs stringi vรครคrtustele

Code Selgitus:

  1. Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
  2. Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
  3. Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
  4. Tรคhemรคrkide jada deklareerimine ja sellele nime andmine. String salvestab vรครคrtuse John. Lisaruum salvestab nullmรคrgi.
  5. Mรตne teksti printimine konsoolile.
  6. Stringi nimega nimi vรครคrtuse trรผkkimine konsoolile.
  7. Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
  8. Funktsiooni main() keha lรตpp.

Siin on veel รผks nรคide C++ standardne stringiklass:

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

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

Vรคljund:

Juurdepรครคs stringi vรครคrtustele

Siin on koodi ekraanipilt:

Juurdepรครคs stringi vรครคrtustele

Code Selgitus:

  1. Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
  2. Kaasa arvatud standardstringi klass meie koodis.
  3. Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
  4. Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
  5. Stringi deklareerimine ja sellele nime andmine. String salvestab vรครคrtuse. Guru99.
  6. Stringi nime vรครคrtuse printimine konsoolil mรตne teksti kรตrval.
  7. Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
  8. Funktsiooni main() keha lรตpp.

Stringi funktsioonid C++

Sageli soovite stringe manipuleerida. C++ pakub laia valikut funktsioone, mida saate selleks kasutada. Need funktsioonid on defineeritud pรคis, seega peame selle funktsioonide kasutamiseks oma koodi lisama. Arutagem mรตnda neist:

strcpy()

See on stringi kopeerimise funktsioon. See kopeerib รผhe stringi teise stringi.

sรผntaksit:

strcpy(string1, string2);

Funktsiooni kaks parameetrit, string1 ja string2, on stringid. Funktsioon kopeerib stringi string2 parameetrisse string1.

strcat()

See on stringi รผhendamise funktsioon. See รผhendab stringe.

sรผntaksit:

strcat(string1, string2);

Funktsiooni kaks parameetrit, string1 ja string2, on รผhendatavad stringid. รœlaltoodud funktsioon รผhendab stringi string2 stringi string1 lรตppu.

strlen()

See on stringi pikkuse funktsioon. See tagastab talle argumendina edastatud stringi pikkuse.

sรผntaksit:

strlen(string1);

Parameeter string1 on stringi nimi, mille pikkus tuleb mรครคrata. รœlaltoodud funktsioon tagastab stringi string1 pikkuse.

strcmp ()

See on stringide vรตrdlemise funktsioon. Seda kasutatakse stringide vรตrdlemiseks.

sรผntaksit:

strcmp(string1, string2);

รœlaltoodud funktsioon tagastab 0, kui stringid string1 ja string2 on sarnased, vรคiksema kui 0, kui string1 < string2, ja suurema kui 0, kui string1 > string2.

Nรคide:

Jรคrgmine nรคide demonstreerib รผlaltoodud stringifunktsioonide kasutamist.

#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รคljund:

Stringi funktsioonid C++

Siin on koodi ekraanipilt:

Stringi funktsioonid C++

Code Selgitus:

  1. Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
  2. Sealhulgas standard pรคis meie koodis.
  3. Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
  4. Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
  5. 10 tรคhemรคrgist koosneva stringi deklareerimine ja sellele nimeks nimi1 andmine. String salvestab vรครคrtuse Guru99.
  6. 10 mรคrgist koosneva stringi deklareerimine ja sellele nime andmine nimi2. String salvestab vรครคrtuse John.
  7. 10 tรคhemรคrgist koosneva stringi deklareerimine ja sellele nime andmine nimi3.
  8. Kuulutades an tรคisarv muutuja nimega len.
  9. Stringi nimi1 kopeerimine stringi nimi3.
  10. Stringi name3 vรครคrtuse vรคljatrรผkkimine konsoolile koos tekstiga. See peaks vรคljatrรผkkima Guru99.
  11. Stringi nimi2 liitmine stringi nimi1 lรตppu. Stringi nimi1 vรครคrtus on nรผรผd Guru99John.
  12. Stringi name1 vรครคrtuse vรคljatrรผkkimine konsoolile koos tekstiga. See peaks vรคljatrรผkkima Guru99John.
  13. Stringi nimega name1 pikkuse mรครคramine ja pikkuse vรครคrtuse mรครคramine muutujale len.
  14. Len-muutuja vรครคrtuse printimine koos muu konsoolile ilmuva tekstiga.
  15. Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
  16. Funktsiooni main() keha lรตpp.

KKK

Jah. Tehisintellekti assistendid saavad tรคhemรคrkimassiive รผmber faktoriseerida std::stringiks, uuendada seotud funktsioone ja selgitada ohutusega seotud eeliseid. Arendajad peaksid siiski รผle vaatama muudatused รครคrmusjuhtumite, puhvri suuruste ja kavandatud kรคitumise osas.

Jah. Tehisintellekti tรถรถriistad genereerivad toiminud nรคiteid, selgitavad strcpy ja strcat kรคitumist ning mรคrgistavad puhvri รผletรคitumise riske. See kiirendab arusaamist, kuid koodi ise kรคivitamine on endiselt parim viis kรคitumise kinnitamiseks.

std::string haldab mรคlu dรผnaamiliselt ja pakub sisseehitatud toiminguid, nagu liitmine ja vรตrdlemine. C-stiilis stringid on fikseeritud tรคhemรคrkidega massiivid, mis lรตpevad '\0'-ga, mis vajavad kรคsitsi mรคlu kรคsitlemist ja on veaohtlikumad.

Kui sihtmassiiv on liiga vรคike, vรตivad need pรตhjustada puhvri รผletรคitumist. Ohutumate alternatiivide hulka kuuluvad strncpy, strncat vรตi lihtsalt std::string toimingute kasutamine, mis haldavad mรคlu automaatselt ja vรคhendavad neid riske.

Vรตta see postitus kokku jรคrgmiselt: