Eeltingimus
Enne selle õpetuse näidete kontrollimist peate kontrollima, kas kompilaator g ++ on süsteemi installitud või mitte. Kui kasutate Visual Studio koodi, installige käivitatava koodi loomiseks vajalikud laiendused C ++ lähtekoodi kompileerimiseks. Siin on C ++ koodi koostamiseks ja käivitamiseks kasutatud rakendust Visual Studio Code.
Funktsiooni find_first_of () omadused
The find_first_of () funktsioon võib esimese argumendi väärtuse põhjal tagastada erinevat tüüpi muutujaid. See tagastab stringi otsingupositsiooni, kui esimene argumendi väärtus on string. See tagastab märgistringi otsingupositsiooni, kui esimeses argumendis on märgitud märkide massiivi kursor. See tagastab puhverpositsiooni, kui on antud kolmanda argumendi väärtus. See tagastab märgi positsiooni, kui esimeses argumendis on antud märk ja see on põhistringis olemas. Otsingu lähtepositsioon on määratud selle funktsiooni teises argumendis. Selle funktsiooni erinevad süntaksid on toodud allpool.
Süntaks
string size_t find_first_of (const string & str, size_t pos = 0) const;
c-string size_t find_first_of (const char* s, size_t pos = 0) const;
puhver size_t find_first_of (const char* s, size_t pos, size_t n) const;
tähemärgi suurus_et leidma_esimene_märk (char c, size_t pos = 0) const;
Näide 1: otsige ja asendage stringi konkreetne märk
Järgmine näide näitab viisi, kuidas otsida stringis konkreetse märgi asukohta. Looge C ++ fail järgmise koodiga, et asendada konkreetne märk teise märgiga. Koodis on find_first_of () funktsiooni on kasutatud stringi teatud märgi kõikide positsioonide otsimiseks ja tähemärkide asendamiseks teise tähemärgiga. Algne string ja asendatud string trükitakse pärast koodi täitmist.
// Kaasa väljundi printimiseks
#kaasake
// Kaasa suuruse_t kasutamiseks
#kaasake
intpeamine()
{
// Stringimuutuja initsialiseerimine
tundi::stringstrData('Tere tulemast LinuxHint'i!');
// Prindi algne string
tundi::maksma << 'Algne string on:' +strData<< ' n';
// Uurige tähe 'i' kõiki positsioone
tundi::suurus_tsearchList=strData.leida_esimene_('mina');
// Korda tsüklit, et asendada kõik 'i' tähega '@'
samas (searchList!=tundi::string::npos)
{
strData[searchList] = '@';
searchList=strData.leida_esimene_('mina', searchList+1);
}
// Printige muudetud string
tundi::maksma << 'Muudetud string on:' +strData<< ' n';
tagasi 0;
}
Väljund:
Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund.
Näide 2: otsige otsitavate märkide esimesest positsioonist
Looge järgmise koodiga C ++ -fail, et otsida mitmest tähemärgist koosneva stringi asukohta ja tagastada märgi esimene positsioon, mis sobib põhistringiga. Stringi muutujale on määratud stringiandmed ja esimene positsioon salvestatakse täisarvulises muutujaga. Positsiooni väärtus prinditakse pärast koodi täitmist.
// Kaasa väljundi printimiseks#kaasake
intpeamine()
{
// Initsialiseeri string muutuja
tundi::stringstrData( 'Põhiline C ++ programmeerimine');
// Deklareeri täisarvu muutuja positsiooni salvestamiseks
intpositsiooni;
// Otsi tähemärki 'C ++'
positsiooni=strData.leida_esimene_( „K ++” );
// Kontrollige positsiooni väärtust
kui (positsiooni> = 0)
{
// Printige positsioon, kui mõni märk on leitud
tundi::maksma << 'Tegelaskuju '' <<strData[positsiooni]
<< '' on leidnud' << 'positsioonil' <<positsiooni<< ' n';
}
tagasi 0;
}
Väljund:
Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund. Siin, tegelane, ' + 'Stringist,' K ++ 'Leidis positsioonilt, 7 peamisest stringist, ' Põhiline C ++ programmeerimine '.
Näide 3: otsige pärast konkreetset positsiooni konkreetset märki
Looge järgmise koodiga C ++ -fail, et otsida teatud märki pärast konkreetset positsiooni. Stringiandmed salvestatakse stringimuutjasse ja teatud stringi otsitakse pärast positsiooni, 13. Kui otsitava stringi mõni märk on peastringist leitud, tagastatakse positsiooni väärtus.
// Kaasa väljundi printimiseks#kaasake
intpeamine()
{
// Stringimuutuja initsialiseerimine
tundi::stringstrData= 'süüa, et elada, mitte elada, et süüa';
// Prindi algne string
tundi::maksma << 'Algne string on:' +strData<< ' n';
// Printige asukoht, kust viimane märk leiti
tundi::maksma<<'Viimane sobiv märk leitud positsioonilt:'
<<strData.leida_esimene_('kell',13) << ' n';
tagasi 0;
}
Väljund:
Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund. Siin, tegelane, ' et 'Stringist,' kl 'Leidis positsioonilt, viisteist peamisest stringist, ' süüa, et elada, mitte elada, et süüa '.
Näide 4: otsige esimese sobiva numbri asukohta
Looge järgmise koodiga C ++ -fail, et otsida teise vektorite loendi esimese vektoriloendi igast numbrist ja tagastada esimese vektoriloendi vastava numbri asukoht. Kui leitakse sobiv argument, tagastatakse positsiooni väärtus; vastasel juhul prinditakse teade.
// Kaasa väljundi printimiseks#kaasake
// Kaasa andmed otsimiseks vektorisse
#kaasake
// Kaasa vektorandmete kasutamiseks
#kaasake
intpeamine()
{
// Kahe vektorloendi kuulutamine
tundi::vektornimekiri 1{10,5,65,31,7};
tundi::vektornimekiri2{2,77,5,38,32,55};
// Otsi loendi1 andmeid loendist2
autoväljund=tundi::leida_esimene_(nimekiri 1.alustada(), nimekiri 1.lõpp(), nimekiri2.alustada(), nimekiri2.lõpp());
// Loe sobiva numbri asukohta
intpositsiooni=tundi::kaugus(nimekiri 1.alustada(), väljund);
// Kontrollige suvalist loendi1 arvu ja loendi2 arvu
kui (väljund<nimekiri 1.lõpp()) {
tundi::maksma << 'Esimene vastav number' <<nimekiri 1[positsiooni] << 'leitud asukohast' <<positsiooni<< ' n';
}
muidu {
tundi::maksma << 'Vastavat numbrit ei leitud. n';
}
}
Väljund:
Pärast ülaltoodud koodi täitmist kuvatakse järgmine väljund. Esimese massiivi arvväärtus 5 on teises massiivis ja selle arvu asukoht on 1.
Järeldus
Funktsiooni find_first_of () saab kasutada tähemärgi või numbri otsimiseks erinevatel programmeerimise eesmärkidel. Seda funktsiooni saab kasutada erinevate otsinguprobleemide lahendamiseks. Loodan, et C ++ programmeerija saab pärast selle õpetuse lugemist seda funktsiooni korralikult kasutada.