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.

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:
Siin on koodi ekraanipilt:
Code Selgitus:
- Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
- Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
- Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
- Tรคhemรคrkide jada deklareerimine ja sellele nime andmine. String salvestab vรครคrtuse John. Lisaruum salvestab nullmรคrgi.
- Mรตne teksti printimine konsoolile.
- Stringi nimega nimi vรครคrtuse trรผkkimine konsoolile.
- Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
- 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:
Siin on koodi ekraanipilt:
Code Selgitus:
- Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
- Kaasa arvatud standardstringi klass meie koodis.
- Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
- Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
- Stringi deklareerimine ja sellele nime andmine. String salvestab vรครคrtuse. Guru99.
- Stringi nime vรครคrtuse printimine konsoolil mรตne teksti kรตrval.
- Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
- 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:
Siin on koodi ekraanipilt:
Code Selgitus:
- Kaasa arvatud iostreami pรคisefail meie koodis. See vรตimaldab meil konsoolist lugeda ja sinna kirjutada.
- Sealhulgas standard pรคis meie koodis.
- Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
- Kutsutakse vรคlja funktsioon main(), mille sisse tuleks lisada programmi loogika. Mรคrk { tรคhistab funktsiooni main() sisu algust.
- 10 tรคhemรคrgist koosneva stringi deklareerimine ja sellele nimeks nimi1 andmine. String salvestab vรครคrtuse Guru99.
- 10 mรคrgist koosneva stringi deklareerimine ja sellele nime andmine nimi2. String salvestab vรครคrtuse John.
- 10 tรคhemรคrgist koosneva stringi deklareerimine ja sellele nime andmine nimi3.
- Kuulutades an tรคisarv muutuja nimega len.
- Stringi nimi1 kopeerimine stringi nimi3.
- Stringi name3 vรครคrtuse vรคljatrรผkkimine konsoolile koos tekstiga. See peaks vรคljatrรผkkima Guru99.
- Stringi nimi2 liitmine stringi nimi1 lรตppu. Stringi nimi1 vรครคrtus on nรผรผd Guru99John.
- Stringi name1 vรครคrtuse vรคljatrรผkkimine konsoolile koos tekstiga. See peaks vรคljatrรผkkima Guru99John.
- Stringi nimega name1 pikkuse mรครคramine ja pikkuse vรครคrtuse mรครคramine muutujale len.
- Len-muutuja vรครคrtuse printimine koos muu konsoolile ilmuva tekstiga.
- Funktsioon main() peaks tagastama vรครคrtuse, kui programm tรถรถtab hรคsti.
- Funktsiooni main() keha lรตpp.




