C++ Merkkijonofunktio: strcpy(), strcat(), strlen(), strcmp() Esimerkki

Mikä on merkkijono?

Merkkijono on merkkijono. A C++ merkkijono on std::string-luokan objekti. Merkit ovat tallennettuja tavusarjoja, joissa on pääsy yhteen merkkitavuun.

C++ merkkijonot varaavat muistia dynaamisesti. Merkkijonolle voidaan varata lisää muistia ajon aikana tarvittaessa. Koska muistia ei ole esivarattu, ei muistin hukkaa. Voimme suorittaa merkkijonoille erilaisia ​​toimintoja, mukaan lukien vertailut, ketjutukset, muunnokset jne.

Merkkien ilmoittaminen

C++ tukee kahden tyyppisiä merkkijonoilmoituksia:

  • C-tyylinen merkkijono
  • Merkkijonoluokan tyyppi

C-tyylinen merkkijono

Tämän tyyppinen merkkijonoilmoitus otettiin käyttöön vuonna C-ohjelmointikieli. C++ tukee sitä edelleen. Se on yksinkertaisesti yksiulotteinen merkkijono, joka päättyy nollamerkkiin (\0). Nollapäätteisessä merkkijonossa on merkkejä, jotka muodostavat merkkijonon, jota seuraa nolla.

Harkitse alla olevaa merkkijonoilmoitusta:

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

Yllä oleva ilmoitus luo merkkijonon, joka muodostaa sanan John. Sanassa on 4 merkkiä, mutta merkkijonon koko on 5. Ylimääräinen tila mahdollistaa tyhjän merkin pitämisen.

Käyttämällä taulukon alustussääntöä voimme kirjoittaa yllä olevan lauseen seuraavasti:

char name[] = "John";

Huomaa, että sinun ei tarvitse sijoittaa tyhjää merkkiä merkkijonovakion loppuun. The C++ kääntäjä asettaa automaattisesti \0:n merkkijonon loppuun alustaessaan taulukkoa.

std::string

Standardi C++ kirjasto tarjoaa merkkijonoluokan, joka tukee erilaisia ​​merkkijonotoimintoja. Se kirjoitetaan muodossa std::string.

Jotta voisimme käyttää tätä luokkaa, meidän on ensin sisällytettävä se työtilaan käyttämällä #include esiprosessoria alla olevan kuvan mukaisesti:

#include<string>

Seuraavaksi voimme ilmoittaa merkkijonomme käyttämällä merkkijonoavainsanaa. Esimerkiksi:

string name = "John";

Yllä oleva lauseke luo merkkijonon nimeltä nimi, joka sisältää arvon John.

Merkkijonoarvojen käyttäminen

In C++, voimme käyttää merkkijonoarvoja merkkijonon nimen avulla. Esimerkiksi:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

lähtö:

Merkkijonoarvojen käyttäminen

Tässä on kuvakaappaus koodista:

Merkkijonoarvojen käyttäminen

Koodin selitys:

  1. Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
  2. Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
  3. Main()-funktion kutsuminen, jonka sisään ohjelman logiikka pitäisi lisätä. { merkitsee main()-funktion rungon alkua.
  4. Merkkijonon ilmoittaminen ja sille nimen antaminen. Merkkijono tallentaa arvon John. Ylimääräinen välilyönti tallentaa nollamerkin.
  5. Tulostetaan tekstiä konsoliin.
  6. Nimimerkkijonon arvon tulostaminen konsoliin.
  7. Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
  8. Main()-funktion rungon loppu.

Tässä on toinen esimerkki käyttämällä C++ standardi merkkijonoluokka:

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

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

lähtö:

Merkkijonoarvojen käyttäminen

Tässä on kuvakaappaus koodista:

Merkkijonoarvojen käyttäminen

Koodin selitys:

  1. Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
  2. Sisältää vakiomerkkijonoluokan koodimme.
  3. Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
  4. Main()-funktion kutsuminen, jonka sisään ohjelman logiikka pitäisi lisätä. { merkitsee main()-funktion rungon alkua.
  5. Merkkijonon ilmoittaminen ja sille nimen antaminen. Merkkijono tallentaa arvon Guru99.
  6. Merkkijonon nimen arvon tulostaminen jonkin tekstin rinnalle konsolissa.
  7. Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
  8. Main()-funktion rungon loppu.

Merkkijonofunktiot sisään C++

Haluat usein käsitellä merkkijonoja. C++ tarjoaa laajan valikoiman toimintoja, joita voit käyttää tähän. Nämä funktiot on määritelty CString-luokassa, joten meidän on sisällytettävä se koodiimme voidaksemme käyttää toimintoja. Keskustellaanpa joistakin:

strcpy()

Tämä on merkkijonon kopiointitoiminto. Se kopioi yhden merkkijonon toiseen merkkijonoon.

Syntaksi:

strcpy(string1, string2);

Funktion kaksi parametria, merkkijono1 ja merkkijono2, ovat merkkijonoja. Funktio kopioi merkkijonon merkkijono2 merkkijonoon1.

strcat()

Tämä on merkkijonojen ketjutusfunktio. Se ketjuttaa merkkijonoja.

Syntaksi:

strcat(string1, string2);

Funktion kaksi parametria, merkkijono1 ja merkkijono2, ovat ketjutettavia merkkijonoja. Yllä oleva funktio ketjuttaa merkkijonon merkkijono2 merkkijonon merkkijono1 loppuun.

strlen()

Tämä on merkkijonon pituusfunktio. Se palauttaa sille argumenttina välitetyn merkkijonon pituuden.

Syntaksi:

strnlen(string1)

Parametri merkkijono1 on sen merkkijonon nimi, jonka pituus määritetään. Yllä oleva funktio palauttaa merkkijonon merkkijono1 pituuden.

strcmp()

Tämä on merkkijonojen vertailutoiminto. Sitä käytetään merkkijonojen vertailuun.

Syntaksi:

strcmp(string1, string2);

Yllä oleva funktio palauttaa arvon 0, jos merkkijonot merkkijono1 ja merkkijono2 ovat samanlaisia, pienempi kuin 0, jos merkkijono1 merkkijono2.

Esimerkiksi:

Seuraava esimerkki osoittaa, kuinka yllä olevia merkkijonofunktioita käytetään:

#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;
}

lähtö:

Merkkijonofunktiot sisään C++

Tässä on kuvakaappaus koodista:

Merkkijonofunktiot sisään C++

Koodin selitys:

  1. Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
  2. Sisältää standardin CString-luokan koodiimme.
  3. Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
  4. Main()-funktion kutsuminen, jonka sisään ohjelman logiikka pitäisi lisätä. { merkitsee main()-funktion rungon alkua.
  5. 10 merkin pituisen merkkijonon ilmoittaminen ja nimen antaminen nimi1. Merkkijono tallentaa arvon Guru99.
  6. 10 merkin pituisen merkkijonon ilmoittaminen ja nimen antaminen nimi2. Merkkijono tallentaa arvon John.
  7. 10 merkin pituisen merkkijonon ilmoittaminen ja nimen antaminen nimi3.
  8. Ilmoittaen an kokonaislukumuuttuja nimeltä len.
  9. Kopioi merkkijonon nimi1 merkkijonoon nimi3.
  10. Tulostetaan merkkijonon nimi1 arvo jonkin tekstin rinnalle konsolissa. Sen pitäisi tulostaa Guru99.
  11. Merkkijonojen nimi2 ketjuttaminen merkkijonon nimi1 loppuun. Nimi1:n arvo on nyt Guru99John.
  12. Tulostetaan merkkijonon nimi1 arvo jonkin tekstin rinnalle konsolissa. Sen pitäisi tulostaa Guru99John
  13. Nimi1-nimisen merkkijonon pituuden määrittäminen ja pituuden arvon määrittäminen muuttujalle len.
  14. Len-muuttujan arvon tulostaminen jonkin muun tekstin rinnalle konsoliin.
  15. Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
  16. Main()-funktion rungon loppu.

Yhteenveto

  • Merkkijono on merkkijono.
  • Merkkijonot kuuluvat standardimerkkijonoluokkaan in C++.
  • Voimme ilmoittaa merkkijonoja käyttämällä C-tyylistä merkkijonoa tai standardimerkkijonoluokkaa.
  • Strcpy()-funktio kopioi merkkijonon toiseen.
  • Strcat()-funktio ketjuttaa kaksi merkkijonoa.
  • Strlen()-funktio palauttaa merkkijonon pituuden.
  • Strcmp()-funktio vertaa kahta merkkijonoa.