Jak podzielić ciąg w C ++

Jak podzielić ciąg w C ++
Praca z danymi ciągami jest istotną częścią każdego języka programowania. Czasami musimy podzielić dane ciągów do celów programowania. Funkcja split () istnieje w wielu językach programowania, aby podzielić ciąg na wiele części. W C ++ nie ma wbudowanej funkcji split () do podziału łańcucha, ale w C ++ istnieje wiele sposobów, na przykład używanie getline () funkcjonować, strtok () funkcja, używając znajdować() I usuwać() funkcje itp. Zastosowania tych funkcji do podziału ciągów w C ++ zostały wyjaśnione w tym samouczku.

Warunek wstępny

Przed sprawdzeniem przykładów tego samouczka musisz sprawdzić, czy kompilator G ++ jest zainstalowany lub nie w systemie. Jeśli używasz kodu Visual Studio, zainstaluj niezbędne rozszerzenia, aby skompilować kod źródłowy C ++, aby utworzyć kod wykonywalny. Tutaj aplikacja kodu Visual Studio została użyta do kompilacji i wykonania kodu C ++.

Podzielony ciąg za pomocą funkcji getline ()

Funkcja getline () służy do odczytania znaków z ciągu lub zawartości pliku, dopóki nie zostanie znaleziony określony ogranicznik lub separator i nie zapisuje każdego ciągu parse na inną zmienną ciągów. Funkcja będzie kontynuowana zadanie do momentu przeanalizowania pełnej zawartości ciągu lub pliku. Składnia tej funkcji podano poniżej.

Składnia:

Istream & getline (Istream & Is, String & Str, char deil);

Tutaj pierwszy parametr, Issstream, jest obiektem, z którego postacie zostaną wyodrębnione. Drugi parametr to zmienna ciągu, która będzie przechowywać wyodrębnioną wartość. Trzeci parametr służy do ustawienia ogranicznika, który będzie użył do wyodrębnienia ciągu.

Utwórz plik C ++ z następującym kodem, aby podzielić ciąg na podstawie ogranicznika przestrzennego za pomocą getline () funkcjonować. Wartość ciągu wielu słów została przypisana do zmiennej, a jako separator użyto miejsca. Zmienna wektorowa została zadeklarowana do przechowywania wyodrębnionych słów. Następnie pętla „dla” używała do wydrukowania każdej wartości z tablicy wektorowej.

// Dołącz niezbędne biblioteki
#włączać
#włączać
#włączać
#włączać
int main ()

// Zdefiniuj dane ciągów, które zostaną podzielone
std :: String strdata = "naucz się programowania C ++";
// Zdefiniuj dane dotyczące właściwości, które będą działane jako ogranicznik
const char separator = ”;
// Zdefiniuj zmienną tablicy dynamicznej ciągów
STD :: wektor OutputArray;
// Skonstruuj strumień z ciągu
std :: stringStream streamdata (strdata);
/*
Deklaruj zmienną ciągu, która będzie używana
Aby przechowywać dane po podzieleniu
*/
STD :: String Val;
/*
Pętla iteruje podzielone dane i
Włóż dane do tablicy
*/
while (std :: getline (streamdata, val, separator))
OutputArray.push_back (val);

// Wydrukuj podzielone dane
STD :: Cout << "The original string is:" << strData << std::endl;
// Przeczytaj tablicę i wydrukuj podzielone dane
STD :: Cout <<
„Wartości po podzieleniu ciągu na podstawie przestrzeni:” <<
std :: endl;
dla (auto & val: outputArray)
STD :: Cout << val << std::endl;

powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Dzielony ciąg za pomocą funkcji strtok ()

Funkcję strtok () może być użyta do podziału ciągu poprzez tokenizowanie części łańcucha na podstawie ogranicznika. Zwraca wskaźnik do następnego tokena, jeśli istnieje; W przeciwnym razie zwraca wartość zerową. strunowy.H Plik nagłówka jest zobowiązany do użycia tej funkcji. Pętla będzie wymagała odczytania wszystkich podzielonych wartości z łańcucha. Pierwszy argument zawiera wartość ciągu, która zostanie przeanalizowana, a drugi argument zawiera ogranicznik, który zostanie użyty do wygenerowania tokena. Składnia tej funkcji podano poniżej.

Składnia:

char * strtok (char * str, const char * delimiters);

Utwórz plik C ++ z następującym kodem, aby podzielić ciąg za pomocą funkcji strtok (). Szereg znaków jest zdefiniowany w kodzie zawierającym dwukropek („:”) jako separator. Następnie strtok () Funkcja jest wywoływana z wartością ciągów i ogranicznikiem w celu wygenerowania pierwszego tokena. ''chwila„Pętla jest zdefiniowana w celu wygenerowania innych tokenów i wartości tokena, aż do ZERO Wartość jest znaleziona.

// Dołącz niezbędne biblioteki
#włączać
#włączać
int main ()

// zadeklaruj szereg znaków
Char Strarray [] = "Mehrab Hossain: It Professional: [email protected]: +8801726783423 ";
// Zwróć pierwszą wartość tokena na podstawie: ':'
char *tokenValue = strtok (Strarray, „:”);
// zainicjuj zmienną licznika
int licznik = 1;
/*
Iteruj pętlę, aby wydrukować wartość tokena
i podziel pozostałe dane ciągów, aby uzyskać
następna wartość tokena
*/
podczas gdy (tokenvalue != Null)

if (licznik == 1)
printf („Nazwa: %s \ n”, tokenValue);
w przeciwnym razie if (licznik == 2)
printf („Zawód: %s \ n”, tokenValue);
w przeciwnym razie if (licznik == 3)
printf („e -mail: %s \ n”, tokenValue);
w przeciwnym razie
printf ("mobil. : %s \ n ”, tokenValue);
tokenValue = strtok (null, „:”);
licznik ++;

powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Podzielony ciąg za pomocą funkcji Find () i Erase ()

Ciąg można podzielić w C ++ za pomocą funkcji FINK () i Erase (). Utwórz plik C ++ z następującym kodem, aby sprawdzić funkcje FINK () i Erase (), aby podzielić wartość ciągu na podstawie konkretnego ogranicznika. Wartość tokena jest generowana przez znalezienie pozycji ogranicznika za pomocą funkcji FINK (), a wartość tokena zostanie przechowywana po usunięciu ogranicznika za pomocą funkcji Erase (). To zadanie zostanie powtórzone do momentu przeanalizowania pełnej zawartości łańcucha. Następnie zostaną wydrukowane wartości tablicy wektorowej.

// Dołącz niezbędne biblioteki
#włączać
#włączać
#włączać
int main ()
// Zdefiniuj ciąg
std :: String StringData = "Bangladesz i Japonia oraz Niemcy i Brazylia";
// Zdefiniuj separator
std :: String separator = "i";
// zadeklaruj zmienną wektorową
STD :: wektor kraj;
// Deklaruj zmienną całkowitą
pozycja int;
// Deklaruj zmienną ciągu
STD :: String zewnętrzny, token;
/*
Podzielić ciąg za pomocą funkcji substr ()
i dodanie podzielonego słowa do wektora
*/
while ((pozycja = StringData.Znajdź (separator)) != std :: String :: npos)
token = StringData.substr (0, pozycja);
// Wyjmij dodatkową przestrzeń z przodu podzielonego sznurka
kraj.push_back (token.usuń (0, token.find_first_not_of („”)));
StringData.usuń (0, pozycja + separator.długość());

// Wydrukuj wszystkie podzielone słowo oprócz ostatniego
dla (const auto i spoza: country)
STD :: Cout << outstr << std::endl;

// Wydrukuj ostatnie podzielone słowo
STD :: Cout << stringData.erase(0, stringData.find_first_not_of(" ")) << std::endl;
powrót 0;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego kodu.

Wniosek

W tym samouczku wyjaśniono trzy różne sposoby podziału łańcucha w C ++ za pomocą prostych przykładów, aby pomóc nowym użytkownikom Python w łatwym wykonywaniu operacji podzielonej w C++.