Predpoklad
Pred kontrolou príkladov tohto tutoriálu musíte skontrolovať, či je kompilátor g ++ v systéme nainštalovaný alebo nie. Ak používate kód Visual Studio, nainštalujte si potrebné rozšírenia na kompiláciu zdrojového kódu C ++ na vytvorenie spustiteľného kódu. Tu bola aplikácia Visual Studio Code použitá na kompiláciu a spustenie kódu C ++.
Syntax
reťazec substr (size_t pos = 0, size_t len = npos) const;
Tu prvý argument obsahuje počiatočnú pozíciu, od ktorej sa začne podreťazec, a druhý argument obsahuje dĺžku podreťazca. Funkcia vráti podreťazec, ak je zadaná platná počiatočná pozícia a dĺžka. Rôzne spôsoby použitia tejto funkcie boli ukázané v ďalšej časti tohto tutoriálu.
Príklad 1: Jednoduché použitie substr ()
Nasledujúci príklad ukazuje najbežnejšie a najjednoduchšie použitie funkcie substr (). Vytvorte súbor C ++ s nasledujúcim kódom na vygenerovanie podreťazca z hodnoty reťazca. Do premennej reťazca bol priradený reťazec viacerých slov. Ďalej platná počiatočná pozícia a dĺžka podreťazca majú v hodnotách argumentov funkcie substr (). Pôvodný reťazec aj podreťazec sa vytlačia po spustení kódu.
// Zahrňte potrebné knižnice
#zahrnúť
#zahrnúť
intHlavná() {
// Definujte reťazcovú premennú
hodiny::reťazecoriginalstr=„Vitajte v Linuxhint“;
// Vystrihnite podreťazec pomocou substr ()
hodiny::reťazecnewstr=originalstr.substr (jedenásť,9);
// Vytlačte pôvodný reťazec
hodiny::náklady <<„Pôvodný reťazec je:“ <<originalstr<< ' n';
// Vytlačte podreťazec
hodiny::náklady <<'Podreťazec je:' <<newstr<< ' n';
vrátiť sa 0;
}
Výkon:
Podľa kódu je pôvodný reťazec „ Vitajte v LinuxHint ‘. 11 udáva počiatočnú pozíciu podreťazca, ktorým je poloha znaku „L“, a 9 udáva hodnotu dĺžky podreťazca. „ Linuxová rada ‘Sa vrátil ako výstup funkcie substr () po spustení kódu.
Príklad 2: Použitie substr () na základe polohy konkrétneho reťazca
Nasledujúci kód vygeneruje podreťazec po vyhľadaní polohy konkrétneho reťazca. Na otestovanie kódu vytvorte súbor C ++ s nasledujúcim kódom. V kóde bola definovaná reťazcová hodnota viacerých slov. Ďalej sa pozícia konkrétneho reťazca hľadá v hlavnom reťazci pomocou funkcie find (). Funkcia substr () bola použitá na generovanie podreťazca od začiatku reťazca po hodnotu polohy, ktorá bude vrátená funkciou find ().
// Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
použitím priestor mienhodiny;
intHlavná()
{
hodiny::reťazecstrData= „Mám rád programovanie v C ++“;
// Poďme nájsť polohu '-' pomocou str.find ()
intpozíciu=strData.Nájsť('programovanie');
// Do tohto vzoru dostaneme podreťazec
hodiny::reťazecnewstr=strData.substr(0, poloha);
hodiny::náklady <<strData<< ' n';
hodiny::náklady <<newstr<< ' n';
vrátiť sa 0;
}
Výkon:
Podľa kódu je hlavnou hodnotou reťazca, Mám rád programovanie v C ++ a hodnota vyhľadávacieho reťazca je „ programovanie “ ktorý existuje v hlavnom reťazci. Výstupom je teda „ Mám rád C ++ „Po spustení kódu.
Príklad 3: Použitie substr () so spracovaním výnimiek
V nasledujúcom kóde bola použitá funkcia substr () s výnimkou spracovania výnimiek. Výnimka sa vygeneruje, ak je vo funkcii substr () zadaná neplatná počiatočná pozícia. Na otestovanie kódu vytvorte súbor C ++ s nasledujúcim kódom. V bloku try bola priradená hodnota reťazca jedného slova a vo funkcii substr (), ktorá vyvolá výnimku a vytlačí chybové hlásenie, bola použitá neplatná začiatočná pozícia.
// Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
intHlavná() {
skúsiť{
// Definujte reťazcovú premennú
hodiny::reťazecoriginalstr='Linuxhint';
// Vystrihnite podreťazec pomocou substr ()
hodiny::reťazecnewstr=originalstr.substr (jedenásť,9);
// Vytlačte podreťazec
hodiny::náklady <<'Podreťazec je:' <<newstr<< ' n';
}
chytiť (konšthodiny::mimo rozsah) {
hodiny::cerr << „Poloha je mimo rozsah. n';
}
vrátiť sa 0;
}
Výkon:
Podľa kódu je hlavnou hodnotou reťazca, Linuxová rada a hodnota počiatočnej pozície je 11, ktorá neexistuje. Bola teda vygenerovaná výnimka a po spustení kódu bolo vytlačené chybové hlásenie.
Príklad 4: Na rozdelenie reťazca použite príkaz substr ()
Nasledujúci príklad ukazuje použitie funkcie substr () na rozdelenie reťazca na základe oddeľovača. Na vyhľadávanie polohy oddeľovača sa použila funkcia find () a na odstránenie rozdeleného reťazca s oddeľovačom z hlavného reťazca funkcia erase (). Cyklus „while“ použil na nájdenie všetkých polôh oddeľovača v hlavnom reťazci a uloženie rozdelenej hodnoty do vektorového poľa. Ďalej boli vytlačené hodnoty vektorového poľa.
// Zahrňte potrebné knižnice#zahrnúť
#zahrnúť
#zahrnúť
intHlavná(){
// Definujte reťazec
hodiny::reťazecstringData= 'PHP: C ++: Python:';
// Definujte oddeľovač
hodiny::reťazecoddeľovač= ':';
// Deklarujte vektorovú premennú
hodiny::vektorjazykov{};
// Deklarujte celočíselnú premennú
intpozíciu;
// Deklarujte reťazcovú premennú
hodiny::reťazecvonkajšia;
/ *
Rozdeľte reťazec pomocou funkcie substr ()
a pridanie rozdeleného slova do vektora
* /
kým ((pozíciu=stringData.Nájsť(oddeľovač)) !=hodiny::reťazec::npos) {
jazykov.push_back(stringData.substr(0, poloha));
stringData.vymazať(0, poloha+oddeľovač.dĺžka());
}
// Vytlačí všetky rozdelené slová
pre (konšt auto &vonkajšia:jazykov) {
hodiny::náklady <<vonkajšia<<hodiny::endl;
}
vrátiť sa 0;
}
Výkon:
Podľa kódu je hlavnou hodnotou reťazca PHP: C ++: Python a hodnota oddeľovača je: „ : ' . Po spustení vyššie uvedeného skriptu sa zobrazí nasledujúci výstup.
Záver
Hlavným účelom použitia funkcie substr () je načítať podreťazec z reťazca uvedením počiatočnej polohy a dĺžky podreťazca. Rôzne použitia tejto funkcie boli v tomto návode vysvetlené pomocou niekoľkých príkladov, ktoré pomôžu novým používateľom C ++ správne ich používať vo svojom kóde.