C++ Merkkijonofunktio: strcpy(), strcat(), strlen(), strcmp()
⚡ Älykäs yhteenveto
C++ Merkkijonofunktiot, kuten strcpy, strcat, strlen ja strcmp, antavat ohjelmien kopioida, liittää, mitata ja vertailla tekstiä. Tämä resurssi selittää, mikä merkkijono on, miten C-tyylisiä ja std::string-merkkijonoja määritetään, miten niiden arvoja käytetään ja miten ydinmerkkijonofunktioita sovelletaan esimerkkien avulla.
Mikä on merkkijono?
Merkkijono on merkkijono. A C++ merkkijono on std::string-luokan objekti. Merkit tallennetaan tavusarjoina, ja pääsy yhteen merkkitavuun on sallittu.
C++ Merkkijonot varaavat muistia dynaamisesti. Merkkijonolle voidaan tarvittaessa varata lisää muistia suorituksen aikana. Koska muistia ei varata etukäteen, muistia ei hukata. Voimme suorittaa merkkijonoille erilaisia toimintoja, kuten vertailua, ketjutusta, muuntamista 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 null-merkkiin (\0). Null-merkkiin päättyvässä merkkijonossa on merkkijonon muodostavat merkit ja niiden perässä null-merkki.
Harkitse alla olevaa merkkijonoilmoitusta:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Yllä oleva deklaraatio luo merkkijonon, joka muodostaa sanan John. Sanassa on 4 merkkiä, mutta merkkijonon koko on 5. Ylimääräinen tila mahdollistaa null-merkin säilyttämisen.
Käyttämällä taulukon alustussääntöä voimme kirjoittaa yllä olevan lauseen seuraavasti:
char name[] = "John";
Huomaa, että merkkijonovakion loppuun ei tarvitse lisätä null-merkkiä. C++ kääntäjä asettaa automaattisesti \0:n merkkijonon loppuun alustaessaan taulukkoa.
std::string
Standardi C++ kirjasto tarjoaa merkkijonoluokan, joka tukee erilaisia merkkijonooperaatioita. Se kirjoitetaan muodossa std::string.
Käyttääksemme tätä luokkaa, meidän on ensin lisättävä se työtilaamme käyttämällä #include-esiprosessoria alla olevan 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ö:
Tässä on kuvakaappaus koodista:
Code Selitys:
- Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
- Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
- Kutsutaan main()-funktiota, jonka sisään ohjelman logiikka lisätään. Merkki { merkitsee main()-funktion rungon alkua.
- Merkkijonon ilmoittaminen ja sille nimen antaminen. Merkkijono tallentaa arvon John. Ylimääräinen välilyönti tallentaa nollamerkin.
- Tulostetaan tekstiä konsoliin.
- Nimimerkkijonon arvon tulostaminen konsoliin.
- Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
- 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ö:
Tässä on kuvakaappaus koodista:
Code Selitys:
- Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
- Sisältää vakiomerkkijonoluokan koodimme.
- Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
- Kutsutaan main()-funktiota, jonka sisään ohjelman logiikka lisätään. Merkki { merkitsee main()-funktion rungon alkua.
- Merkkijonon määrittäminen ja sille nimen antaminen nimi. Merkkijono tallentaa arvon. Guru99.
- Merkkijonon nimen arvon tulostaminen jonkin tekstin rinnalle konsolissa.
- Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
- Main()-funktion rungon loppu.
Merkkijonofunktiot sisään C++
Haluat usein käsitellä merkkijonoja. C++ tarjoaa laajan valikoiman funktioita, joita voit käyttää tähän. Nämä funktiot on määritelty otsikko, joten meidän on sisällytettävä se koodiimme voidaksemme käyttää funktioita. Käydään läpi joitakin niistä:
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 merkkijonoon merkkijono1.
strcat()
Tämä on merkkijonojen ketjutusfunktio. Se ketjuttaa merkkijonoja.
Syntaksi:
strcat(string1, string2);
Funktion kaksi parametria, merkkijono1 ja merkkijono2, ovat yhdistettävät merkkijonot. Yllä oleva funktio yhdistää merkkijonon merkkijono2 merkkijonon merkkijono1 loppuun.
strlen()
Tämä on merkkijonon pituusfunktio. Se palauttaa sille argumenttina välitetyn merkkijonon pituuden.
Syntaksi:
strlen(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 samankaltaisia, pienemmän kuin 0, jos merkkijono1 < merkkijono2, ja suuremman 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ö:
Tässä on kuvakaappaus koodista:
Code Selitys:
- Sisältää iostream-otsikkotiedoston koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
- Mukaan lukien standardi otsikko koodissamme.
- Mukaan lukien std-nimiavaruus, jotta sen luokkia ja toimintoja voidaan käyttää kutsumatta sitä.
- Kutsutaan main()-funktiota, jonka sisään ohjelman logiikka lisätään. Merkki { merkitsee main()-funktion rungon alkua.
- Deklaroidaan 10 merkin mittainen merkkijono ja annetaan sille nimi nimi1. Merkkijonoon tallennetaan arvo Guru99.
- 10 merkin pituisen merkkijonon ilmoittaminen ja nimen antaminen nimi2. Merkkijono tallentaa arvon John.
- 10 merkin pituisen merkkijonon ilmoittaminen ja nimen antaminen nimi3.
- Ilmoittaen an kokonaislukumuuttuja nimeltä len.
- Kopioi merkkijonon nimi1 merkkijonoon nimi3.
- Tulostaa merkkijonon name3 arvon konsoliin jonkin tekstin rinnalla. Sen pitäisi tulostaa Guru99.
- Yhdistetään merkkijono nimi2 merkkijonon nimi1 loppuun. Merkkijonon nimi1 arvo on nyt Guru99John.
- Tulostaa merkkijonon name1 arvon konsoliin jonkin tekstin rinnalla. Sen pitäisi tulostaa Guru99John.
- Merkkijonon nimi1 pituuden määrittäminen ja pituuden arvon sijoittaminen muuttujaan len.
- len-muuttujan arvon tulostaminen konsoliin muun tekstin ohella.
- Main()-funktion pitäisi palauttaa arvo, jos ohjelma toimii hyvin.
- Main()-funktion rungon loppu.





