Jak podzielić ciąg w C++

How Split String C



Praca z danymi łańcuchowymi jest istotną częścią każdego języka programowania. Czasami musimy podzielić dane ciągu do celów programistycznych. Funkcja split() istnieje w wielu językach programowania, aby podzielić ciąg na wiele części. W C++ nie ma wbudowanej funkcji split() do dzielenia łańcucha, ale w C++ istnieje wiele sposobów na wykonanie tego samego zadania, na przykład użycie getline() funkcjonować, strtok() funkcja, używanie odnaleźć() oraz usuwać() funkcje itp. Użycie tych funkcji do dzielenia ciągów w C++ zostało wyjaśnione w tym samouczku.

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++.







Podziel ciąg za pomocą funkcji getline()

Funkcja getline() służy do odczytywania znaków z ciągu znaków lub zawartości pliku do momentu znalezienia określonego ogranicznika lub separatora i zapisywania każdego ciągu parsowania w innej zmiennej ciągu. Funkcja będzie kontynuować zadanie do momentu przeanalizowania pełnej zawartości ciągu lub pliku. Składnia tej funkcji jest podana poniżej.



Składnia:



istream&getline(istream&jest, ciąg&ul.zwęglaćdelim);

Tutaj pierwszy parametr, jest strumień, to obiekt, z którego zostaną wyodrębnione znaki. Drugi parametr to zmienna typu string, która będzie przechowywać wyodrębnioną wartość. Trzeci parametr służy do ustawienia ogranicznika, który będzie używany do wyodrębniania ciągu.





Utwórz plik C++ z następującym kodem, aby podzielić ciąg na podstawie separatora spacji za pomocą getline() funkcjonować. Wartość ciągu wielu słów została przypisana do zmiennej, a jako separatora użyto spacji. Do przechowywania wyodrębnionych słów została zadeklarowana zmienna wektora. Następnie pętla „for” użyła do wypisania każdej wartości z tablicy wektorowej.

//Dołącz niezbędne biblioteki
#włączać
#włączać
#włączać
#włączać

intGłówny()
{
//Zdefiniuj dane ciągu, które zostaną podzielone
godziny::strunowystrData= „Naucz się programowania w C++”;
//Zdefiniuj dane, które będą traktowane jako separator
stały zwęglaćseparator= '';
//Zdefiniuj dynamiczną zmienną tablicową ciągów
godziny::wektortablica wyjściowa;
//Zbuduj strumień z łańcucha
godziny::strumień strunowystreamData(strData);
/ *
Zadeklaruj zmienną łańcuchową, która będzie używana
przechowywać dane po podziale
* /

godziny::strunowygodzina;
/ *
Pętla iteruje podzielone dane i
wstaw dane do tablicy
* /

podczas (godziny::getline(streamData, val, separator)) {
tablica wyjściowa.push_back(godzina);
}
//Wydrukuj podzielone dane
godziny::koszt << 'Oryginalny ciąg to:' <<strData<<godziny::koniec;
//Odczytaj tablicę i wydrukuj podzielone dane
godziny::koszt << ' Wartości po podzieleniu ciągu na podstawie spacji:' <<godziny::koniec;
dla (automatyczny &godzina:tablica wyjściowa) {
godziny::koszt <<godzina<<godziny::koniec;
}
powrót 0;
}

Wyjście:



Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Podziel ciąg za pomocą funkcji strtok()

Funkcja strtok() może służyć do dzielenia ciągu przez tokenizację części ciągu na podstawie ogranicznika. Zwraca wskaźnik do następnego tokena, jeśli istnieje; w przeciwnym razie zwraca wartość NULL. ten string.h do korzystania z tej funkcji wymagany jest plik nagłówkowy. Pętla będzie wymagała odczytania wszystkich podzielonych wartości z ciągu. Pierwszy argument zawiera wartość ciągu, która zostanie przeanalizowana, a drugi argument zawiera ogranicznik, który zostanie użyty do wygenerowania tokenu. Składnia tej funkcji jest podana poniżej.

Składnia:

zwęglać * strtok ( zwęglać *ul.stały zwęglać *ograniczniki);

Utwórz plik C++ z następującym kodem, aby podzielić ciąg za pomocą funkcji strtok(). Tablica znaków jest zdefiniowana w kodzie zawierającym dwukropek (‘:’) jako separator. Następnie strtok() Funkcja jest wywoływana z wartością ciągu i ogranicznikiem w celu wygenerowania pierwszego tokena. Ten ' podczas Pętla ’ jest zdefiniowana tak, aby generować pozostałe tokeny i wartości tokenów aż do ZERO wartość została znaleziona.

//Dołącz niezbędne biblioteki
#włączać
#włączać

intGłówny()
{
//Zadeklaruj tablicę znaków
zwęglaćstrArray[] = 'Mehrab Hossain :IT Professional : [email chroniony] :+8801726783423';
//Zwróć pierwszą wartość tokena na podstawie ':'
zwęglać *tokenValue= strtok(strArray,':');
//Zainicjuj zmienną licznika
intlicznik= 1;
/ *
Wykonaj iterację pętli, aby wydrukować wartość tokena
i podziel pozostałe dane ciągu, aby uzyskać
następna wartość tokena
* /

podczas (tokenValue!= ZERO)
{
Jeśli(licznik== 1)
printf('Nazwy ', wartość tokena);
w przeciwnym razie Jeśli(licznik== 2)
printf('Zawód: %s ', wartość tokena);
w przeciwnym razie Jeśli(licznik== 3)
printf('E-mail: %s ', wartość tokena);
w przeciwnym razie
printf('Nr telefonu komórkowego: %s ', wartość tokena);
tokenValue= strtok(ZERO,':');
licznik++;
}
powrót 0;
}

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Podziel ciąg za pomocą funkcji find() i erase()

Ciąg można podzielić w C++ za pomocą funkcji find() i erase(). Utwórz plik C++ z następującym kodem, aby sprawdzić zastosowania funkcji find() i erase() do dzielenia wartości ciągu na podstawie określonego ogranicznika. Wartość tokena jest generowana przez znalezienie pozycji ogranicznika za pomocą funkcji find(), a wartość tokena zostanie zachowana po usunięciu ogranicznika za pomocą funkcji erase(). To zadanie będzie powtarzane aż do przeanalizowania pełnej zawartości ciągu. Następnie zostaną wydrukowane wartości tablicy wektorów.

//Dołącz niezbędne biblioteki
#włączać
#włączać
#włączać

intGłówny(){
//Zdefiniuj ciąg
godziny::strunowyciągDane= „Bangladesz i Japonia i Niemcy i Brazylia”;
//Zdefiniuj separator
godziny::strunowyseparator= 'oraz';
//Zadeklaruj zmienną wektora
godziny::wektorkraj{};
//Zadeklaruj zmienną całkowitą
intpozycja;
//Zadeklaruj zmienną łańcuchową
godziny::strunowyoutstr, token;

/ *
Podziel ciąg za pomocą funkcji substr()
i dodanie podzielonego słowa do wektora
* /

podczas ((pozycja=ciągData.odnaleźć(separator)) !=godziny::strunowy::npos) {
znak=ciągData.substr(0, stanowisko);
//Usuń dodatkową przestrzeń z przodu rozdzielonego sznurka
kraj.push_back(znak.usuwać(0, token.find_first_not_of('')));
ciągData.usuwać(0, stanowisko+separator.długość());
}
//Wydrukuj wszystkie podzielone słowa z wyjątkiem ostatniego
dla (stały automatyczny &przewyższyć:kraj) {
godziny::koszt <<przewyższyć<<godziny::koniec;
}
//Wydrukuj ostatnie podzielone słowo
godziny::koszt <<ciągData.usuwać(0, ciągDane.find_first_not_of('')) <<godziny::koniec;
powrót 0;
}

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Wniosek

W tym samouczku wyjaśniono trzy różne sposoby dzielenia ciągu w języku C++, używając prostych przykładów, aby pomóc nowym użytkownikom Pythona w łatwym wykonaniu operacji dzielenia w C++.