C++ Stringi funktsioon: strcpy(), strcat(), strlen(), strcmp() Näide
Mis on string?
String on märkide jada. A C++ string on klassi std::string objekt. Märgid on salvestatud baitide jadad, millel on juurdepääs ühele märgibaidile.
C++ stringid eraldavad mälu dünaamiliselt. Vajadusel saab käivitamise ajal eraldada stringile rohkem mälu. Kuna mälu eeleraldistamine puudub, ei raisata ka mälu. Stringidega saame teha erinevaid operatsioone, sh võrdlusi, konkateneerimist, 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 märkide massiiv, mis lõpeb nullmärgiga (\0). Nulllõpuga stringil on tähemärgid, mis moodustavad stringi, 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õnal on 4 tähemärki, kuid stringi suurus on 5. Lisaruum võimaldab hoida nullmärki.
Massiivi initsialiseerimise reeglit kasutades saame ülaltoodud avalduse kirjutada järgmiselt:
char name[] = "John";
Pange tähele, et te ei pea asetama stringikonstandi lõppu nullmärki. The C++ kompilaator asetab massiivi lähtestamisel automaatselt stringi lõppu '\0'.
std::string
Standard C++ teek pakub stringiklassi, mis toetab erinevaid stringioperatsioone. See on kirjutatud kujul std::string.
Selle klassi kasutamiseks peame esmalt lisama selle oma tööruumi, 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:
Koodi 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.
- Main() funktsiooni kutsumine, mille sees tuleks lisada programmi loogika. { märgib funktsiooni main() keha 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:
Koodi 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.
- Main() funktsiooni kutsumine, mille sees tuleks lisada programmi loogika. { märgib funktsiooni main() keha 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 laias valikus funktsioone, mida saate selleks kasutada. Need funktsioonid on määratletud klassis CString, seega peame funktsioonide kasutamiseks selle oma koodi lisama. Arutame mõnda:
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 stringi1.
strcat()
See on stringi ühendamise funktsioon. See ühendab stringe.
süntaksit:
strcat(string1, string2);
Funktsiooni kaks parameetrit string1 ja string2 on stringid, mis tuleb ühendada. Ülaltoodud funktsioon ühendab stringi string2 stringi string1 lõppu.
strlen()
See on stringi pikkuse funktsioon. See tagastab talle argumendina edastatud stringi pikkuse.
süntaksit:
strnlen(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ähem 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:
Koodi selgitus:
- Kaasa arvatud iostreami päisefail meie koodis. See võimaldab meil konsoolist lugeda ja sinna kirjutada.
- Kaasa arvatud standardne CString klass meie koodis.
- Kaasa arvatud std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
- Main() funktsiooni kutsumine, mille sees tuleks lisada programmi loogika. { märgib funktsiooni main() keha algust.
- 10 märgist koosneva stringi deklareerimine ja sellele nime andmine nimi1. 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 nimi1 väärtuse printimine konsoolis mõne teksti kõrval. See peaks printima Guru99.
- Stringide nimi2 ühendamine stringi nimi1 lõppu. Nimi1 väärtus on nüüd Guru99John.
- Stringi nimi1 väärtuse printimine konsoolis mõne teksti kõrval. See peaks trükkima Guru99Johni
- Stringi nimega nimi1 pikkuse määramine ja pikkuse väärtuse määramine muutujale len.
- Len-muutuja väärtuse trükkimine koos mõne muu konsooli tekstiga.
- Funktsioon main() peaks tagastama väärtuse, kui programm töötab hästi.
- Funktsiooni main() keha lõpp.
kokkuvõte
- String on märkide jada.
- Stringid kuuluvad standardsesse stringiklassi in C++.
- Stringe saame deklareerida C-stiilis märgistringi või standardse stringiklassi abil.
- Funktsioon strcpy () kopeerib ühe stringi teise.
- Funktsioon strcat() ühendab kaks stringi.
- Funktsioon strlen() tagastab stringi pikkuse.
- Funktsioon strcmp() võrdleb kahte stringi.




