Warunek wstępny
Przed sprawdzeniem przykładów z tego samouczka, musisz sprawdzić, czy kompilator g++ jest zainstalowany w systemie. Jeśli używasz Visual Studio Code, zainstaluj niezbędne rozszerzenia, aby skompilować kod źródłowy C++ w celu utworzenia kodu wykonywalnego. Tutaj aplikacja Visual Studio Code została użyta do kompilacji i wykonania kodu C++.
Składnia
string substr (size_t pos = 0, size_t len = npos) const;
Tutaj pierwszy argument zawiera pozycję początkową, od której zostanie rozpoczęty podciąg, a drugi argument zawiera długość podciągu. Funkcja zwróci podciąg, jeśli podano prawidłową pozycję początkową i długość. Różne zastosowania tej funkcji zostały pokazane w następnej części tego samouczka.
Przykład 1: Proste użycie substr()
Poniższy przykład pokazuje najczęstsze i najprostsze użycie funkcji substr(). Utwórz plik C++ z następującym kodem, aby wygenerować podciąg z wartości ciągu. Ciąg składający się z wielu słów został przypisany do zmiennej ciągu. Następnie poprawna pozycja początkowa i długość podciągu mają w wartościach argumentów funkcji substr(). Zarówno oryginalny ciąg, jak i podciąg zostaną wydrukowane po wykonaniu kodu.
//Dołącz niezbędne biblioteki
#włączać
#włączać
intGłówny() {
//Zdefiniuj zmienną łańcuchową
godziny::strunowyoryginał='Witamy w Linuxhint';
//Wytnij podciąg za pomocą substr()
godziny::strunowynewsstr=oryginałstr.substr (jedenaście,9);
//Wydrukuj oryginalny ciąg
godziny::koszt <<'Oryginalny ciąg to :' <<oryginał<< ' ';
//Wydrukuj podciąg
godziny::koszt <<'Podciąg to:' <<newsstr<< ' ';
powrót 0;
}
Wyjście:
Zgodnie z kodem oryginalny ciąg to „ Witamy w LinuxHint „. 11 podało jako początkową pozycję podciągu, czyli pozycję znaku „L”, a 9 jako wartość długości podciągu. ‘ LinuxWskazówka ‘ zwrócił się jako wyjście funkcji substr() po wykonaniu kodu.
Przykład 2: Użycie substr() w oparciu o pozycję określonego ciągu
Poniższy kod wygeneruje podciąg po wyszukaniu pozycji danego ciągu. Utwórz plik C++ z następującym kodem, aby przetestować kod. W kodzie zdefiniowano ciąg znaków składający się z wielu słów. Następnie pozycja określonego ciągu jest przeszukiwana w głównym ciągu za pomocą funkcji find(). Funkcja substr() została użyta do wygenerowania podłańcucha rozpoczynającego się od początku ciągu do wartości pozycji, która zostanie zwrócona przez funkcję find().
//Dołącz niezbędne biblioteki#włączać
#włączać
za pomocą przestrzeń nazwgodziny;
intGłówny()
{
godziny::strunowystrData= „Lubię programowanie w C++”;
// Znajdźmy pozycję „--” za pomocą str.find()
intpozycja=strData.odnaleźć('programowanie');
// Otrzymamy podciąg aż do tego wzorca
godziny::strunowynewsstr=strData.substr(0, stanowisko);
godziny::koszt <<strData<< ' ';
godziny::koszt <<newsstr<< ' ';
powrót 0;
}
Wyjście:
Zgodnie z kodem główna wartość ciągu to: Lubię programowanie w C++ a wartość szukanego ciągu to „ programowanie' który istnieje w głównym ciągu. Tak więc wynik jest następujący: „ lubię C++ ‘ po wykonaniu kodu.
Przykład 3: Używanie substr() z obsługą wyjątków
Funkcja substr() została użyta z obsługą wyjątków w poniższym kodzie. Wyjątek zostanie wygenerowany, jeśli w funkcji substr() zostanie podana nieprawidłowa pozycja początkowa. Utwórz plik C++ z następującym kodem, aby przetestować kod. W bloku try przypisano wartość ciągu jednego słowa, a w funkcji substr() użyto nieprawidłowej pozycji początkowej, która zgłosi wyjątek i wyświetli komunikat o błędzie.
//Dołącz niezbędne biblioteki#włączać
#włączać
intGłówny() {
próbować{
//Zdefiniuj zmienną łańcuchową
godziny::strunowyoryginał=„Linuxhint”;
//Wytnij podciąg za pomocą substr()
godziny::strunowynewsstr=oryginałstr.substr (jedenaście,9);
//Wydrukuj podciąg
godziny::koszt <<'Podciąg to:' <<newsstr<< ' ';
}
łapać (stałygodziny::poza zakresem) {
godziny::zły << „Pozycja jest poza zasięgiem. ';
}
powrót 0;
}
Wyjście:
Zgodnie z kodem główna wartość ciągu to: LinuxWskazówka a wartość początkowa wynosi 11, która nie istnieje. Tak więc został wygenerowany wyjątek, a komunikat o błędzie został wydrukowany po wykonaniu kodu.
Przykład 4: Używanie substr() do dzielenia ciągu
Poniższy przykład pokazuje użycie funkcji substr() do dzielenia ciągu na podstawie ogranicznika. Funkcja find() została użyta do przeszukania pozycji ogranicznika, a funkcja erase() została użyta do usunięcia podzielonego ciągu z ogranicznikiem z ciągu głównego. Pętla „while” została wykorzystana do znalezienia wszystkich pozycji ogranicznika w głównym ciągu i zapisania podzielonej wartości w tablicy wektorowej. Następnie zostały wydrukowane wartości tablicy wektorowej.
//Dołącz niezbędne biblioteki#włączać
#włączać
#włączać
intGłówny(){
//Zdefiniuj ciąg
godziny::strunowyciągDane= 'PHP:C++:Python:';
//Zdefiniuj separator
godziny::strunowyseparator= ':';
//Zadeklaruj zmienną wektora
godziny::wektorJęzyki{};
//Zadeklaruj zmienną całkowitą
intpozycja;
//Zadeklaruj zmienną łańcuchową
godziny::strunowyprzewyższyć;
/ *
Podziel ciąg za pomocą funkcji substr()
i dodanie podzielonego słowa do wektora
* /
podczas ((pozycja=ciągData.odnaleźć(separator)) !=godziny::strunowy::npos) {
Języki.push_back(ciągData.substr(0, stanowisko));
ciągData.usuwać(0, stanowisko+separator.długość());
}
//Wydrukuj wszystkie podzielone słowa
dla (stały automatyczny &przewyższyć:Języki) {
godziny::koszt <<przewyższyć<<godziny::koniec;
}
powrót 0;
}
Wyjście:
Zgodnie z kodem, główna wartość ciągu to PHP:C++:Python a wartość ogranicznika to „ : ” . Poniższe dane wyjściowe pojawią się po wykonaniu powyższego skryptu.
Wniosek
Głównym celem użycia funkcji substr() jest pobranie podciągu z ciągu poprzez podanie pozycji początkowej i długości podciągu. Różne zastosowania tej funkcji zostały wyjaśnione w tym samouczku przy użyciu wielu przykładów, aby pomóc nowym użytkownikom C++ w prawidłowym użyciu jej w swoim kodzie.