Jak používat funkci find_first_of () v C ++

How Use Find_first_of Function C



Pro práci s řetězcovými daty existují v C ++ různé předdefinované funkce. The find_first_of () funkce slouží k nalezení umístění prvního výskytu zadaného znaku. Tato funkce vrací pozici prvního výskytu řetězce, který bude uveden jako hodnota argumentu této funkce. V tomto kurzu byla vysvětlena různá použití této funkce pro vyhledávání řetězce v C ++.

Předpoklad

Před kontrolou příkladů tohoto kurzu musíte zkontrolovat, zda je kompilátor g ++ nainstalován nebo není v systému. Pokud používáte kód Visual Studio, nainstalujte potřebná rozšíření ke kompilaci zdrojového kódu C ++ a vytvořte spustitelný kód. Zde byla aplikace Visual Studio Code použita ke kompilaci a spuštění kódu C ++.







Vlastnosti funkce find_first_of ()

The find_first_of () funkce může vracet různé typy proměnných na základě hodnoty prvního argumentu. Pokud je první hodnotou argumentu řetězec, vrátí pozici hledání řetězce. Pokud je v prvním argumentu uveden ukazatel na pole znaků, vrátí vyhledávací pozici řetězce znaků. Pokud je uvedena hodnota třetího argumentu, vrátí pozici vyrovnávací paměti. Pokud je v prvním argumentu uveden znak a existuje v hlavním řetězci, vrátí pozici znaku. Počáteční pozice hledání je nastavena ve druhém argumentu této funkce. Různá syntaxe této funkce je uvedena níže.



Syntax

řetězec 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;
buffer size_t find_first_of (const char* s, size_t pos, size_t n) const;
znak size_t find_first_of (char c, size_t pos = 0) const;



Příklad 1: Vyhledejte a nahraďte konkrétní znak řetězce

Následující příklad ukazuje způsob hledání pozice konkrétního znaku v řetězci. Vytvořte soubor C ++ s následujícím kódem, který nahradí konkrétní znak jiným znakem. V kódu je find_first_of () Funkce byla použita k vyhledávání všech pozic konkrétního znaku v řetězci a nahrazení znaků jiným znakem pomocí smyčky. Původní řetězec a nahrazený řetězec budou vytištěny po spuštění kódu.





// Zahrnout pro tisk výstupu
#zahrnout
// Zahrnout pro použití size_t
#zahrnout

inthlavní()
{
// Inicializace proměnné řetězce
hodiny::tětivastrData('Welcome to LinuxHint');
// Vytiskněte původní řetězec
hodiny::náklady << 'Původní řetězec je:' +strData<< ' n';
// Zjistěte veškerou polohu znaku 'i'
hodiny::velikost_tsearchList=strData.find_first_of('já');
// Opakujte smyčku tak, aby byla všechna 'i' nahrazena '@'
zatímco (searchList!=hodiny::tětiva::npos)
{
strData[searchList] = '@';
searchList=strData.find_first_of('já', searchList+1);
}
// Vytiskněte upravený řetězec
hodiny::náklady << 'Upravený řetězec je:' +strData<< ' n';

vrátit se 0;
}

Výstup:

Po spuštění výše uvedeného kódu se zobrazí následující výstup.



Příklad 2: Vyhledejte první pozici hledaných znaků

Vytvořte soubor C ++ s následujícím kódem, který vyhledá pozici řetězce více znaků a vrátí první pozici znaku, který odpovídá hlavnímu řetězci. Řetězcová data byla přiřazena do řetězcové proměnné a první pozice je uložena v celočíselné proměnné. Hodnota pozice bude vytištěna po spuštění kódu.

// Zahrnout pro tisk výstupu
#zahrnout

inthlavní()
{
// Inicializujte proměnnou řetězce
hodiny::tětivastrData( 'Základní programování v C ++');
// Deklarujte proměnnou interger pro uložení pozice
intpozice;
// Hledat znak 'C ++'
pozice=strData.find_first_of( 'K++' );
// Zkontrolujte hodnotu polohy
-li (pozice> = 0)
{
// Vytiskne pozici, pokud byl nalezen jakýkoli znak
hodiny::náklady << 'Postava '' <<strData[pozice]
<< '' byl nalezen' << 'na pozici' <<pozice<< ' n';
}

vrátit se 0;
}

Výstup:

Po spuštění výše uvedeného kódu se zobrazí následující výstup. Tady postava „ + “Řetězce,„ K++ “Našel na pozici, 7 hlavního řetězce, „ Základní programování v C ++ '.

Příklad 3: Vyhledejte konkrétní znak za konkrétní pozicí

Vytvořte soubor C ++ s následujícím kódem a vyhledejte konkrétní znak za konkrétní pozicí. Řetězcová data jsou uložena v řetězcové proměnné a konkrétní řetězec je prohledán za pozicí 13. Pokud byl v hlavním řetězci nalezen jakýkoli znak hledaného řetězce, bude vrácena hodnota pozice.

// Zahrnout pro tisk výstupu
#zahrnout

inthlavní()
{
// Inicializace proměnné řetězce
hodiny::tětivastrData= „Jezte, abyste žili, nežijte, abyste jedli“;
// Vytiskněte původní řetězec
hodiny::náklady << 'Původní řetězec je:' +strData<< ' n';
// Vytiskne pozici, kde byl nalezen poslední znak
hodiny::náklady<<'Poslední odpovídající znak nalezený na pozici:'
<<strData.find_first_of('na',13) << ' n';
vrátit se 0;
}

Výstup:

Po spuštění výše uvedeného kódu se zobrazí následující výstup. Tady postava „ na “Řetězce,„ na “Našel na pozici, patnáct hlavního řetězce, „ jíst, abys žil, nežij, abys jedl '.

Příklad 4: Vyhledejte pozici prvního shodného čísla

Vytvořte soubor C ++ s následujícím kódem, který prohledá každé číslo prvního seznamu vektorů ve druhém seznamu vektorů a vrátí pozici odpovídajícího čísla prvního seznamu vektorů. Pokud je nalezen odpovídající argument, pak bude vrácena hodnota pozice; v opačném případě bude vytištěna zpráva.

// Zahrnout pro tisk výstupu
#zahrnout
// Zahrnout pro vyhledávání dat ve vektoru
#zahrnout
// Zahrnout pro použití vektorových dat
#zahrnout

inthlavní()
{
// Deklarujte seznam dvou vektorů
hodiny::vektorseznam 1{10,5,65,31,7};
hodiny::vektorseznam 2{2,77,5,38,32,55};
// Vyhledejte data ze seznamu1 v seznamu2
autovýstup=hodiny::find_first_of(seznam 1.začít(), seznam 1.konec(), seznam2.začít(), seznam2.konec());
// Přečíst pozici odpovídajícího čísla
intpozice=hodiny::vzdálenost(seznam 1.začít(), výstup);

// Zkontrolujte, zda se libovolný počet seznamu1 shoduje s libovolným počtem seznamů2
-li (výstup<seznam 1.konec()) {
hodiny::náklady << „První odpovídající číslo“ <<seznam 1[pozice] << 'nalezeno na pozici' <<pozice<< ' n';
}
jiný {
hodiny::náklady << 'Nebylo nalezeno žádné odpovídající číslo.' n';
}
}

Výstup:

Po spuštění výše uvedeného kódu se zobrazí následující výstup. Číselná hodnota, 5 prvního pole, existuje ve druhém poli a pozice tohoto čísla je 1.

Závěr

Funkci find_first_of () lze použít k hledání znaku nebo čísla pro různé účely programování. Tuto funkci lze použít k řešení různých problémů s vyhledáváním. Doufám, že programátor C ++ dokáže po přečtení tohoto tutoriálu tuto funkci správně používat.