Jak podzielić ciągi za pomocą ogranicznika w C ++

Jak podzielić ciągi za pomocą ogranicznika w C ++
Rozdzielenie łańcucha za pomocą ogranicznika jest powszechną operacją w programowaniu, szczególnie podczas pracy z danymi tekstowymi. A SYMITER jest znakiem lub sekwencją znaków używanych do oddzielenia jednej części łańcucha od drugiego. Gdy tekst jest podzielony na mniejsze podjazdy za pomocą SYMITER, ogranicznik lub separator jest z góry określony. Wiele zadań programowania, takich jak parsowanie danych wejściowych, tokenizacja tekstu i przetwarzanie ciągów, używa tej techniki. Istnieje kilka String Słamy Metody dostępne w C ++, każdy z zalet i wad.

W tym artykule zbadamy niektóre z powszechnych sposobów Podziel ciąg za pomocą ogranicznika w c++.

Podzielone ciągi za pomocą ogranicznika w c++

W C ++ istnieje wiele podejść do przełamania ciągu za pomocą ogranicznika, w tym:

  • Za pomocą funkcji FINK () i substr ()
  • Za pomocą funkcji strtok ()
  • Korzystanie z klasy StringStream

1: Za pomocą funkcji FINK () i substr ()

Ciąg można podzielić za pomocą funkcji C ++ znajdować() I substr (). Pierwsza instancja podrzędu znajduje się przy użyciu znajdować() metoda. Jeśli nie ma już wystąpień, pozostały kawałek sznurka zostanie zwrócony po umieszczeniu w wektorze. Podłoże rozpoczynające się na początku tekstu i kończące się na ograniczeniu można następnie wyodrębnić za pomocą substr () funkcjonować. Możemy to robić, dopóki wszystkie podstęp nie zostaną uzyskane.

Oto przykład C ++, jak to Podziel ciąg za pomocą ogranicznika:

#włączać
#włączać
int main ()
std :: string str = "Apple, banan, wiśnia";
std :: String Delimiter = ",";
size_t pos = 0;
std :: Token string;
while ((pos = str.Znajdź (delimiter)) != std :: String :: npos)
token = str.substr (0, POS);
STD :: Cout << token << std::endl;
str.usuń (0, POS + SYMITER.długość());

STD :: Cout << str << std::endl;
powrót 0;

W powyższym przykładzie wymieniony ciąg „STR” i wyznaczanie nazwiska „Zwajnik” są określone. Podjazdy z „STR” są następnie wyodrębnione za pomocą pętli white. Lokalizacja ogranicznika jest zwracana przez znajdować() metoda lub STD :: String :: NPOS Jeśli nie można go zlokalizować. Podłoże od początku „STR” Do ograniczenia jest wyodrębniane za pomocą „Substr ()” w tym miejscu, a następnie jest drukowany do konsoli. Wyodrębnione podłoże i ograniczenie są następnie wyciągnięte „STR” używając "usuwać()" funkcjonować. Kiedyś nie ma już ograniczeń „STR”, Powtarzamy tę operację. Następnie wyprowadzamy ostatni podłoże "wiśnia" do konsoli.

Wyjście

2: Za pomocą funkcji strtok ()

strtok () Funkcja to kolejna funkcja w C ++, która może skutecznie podzielić ciągami za pomocą ogranicznika w dowolnym programie C ++. Wyciąga dwa dane wejściowe; ciąg, który ma być podzielony i charakter podwajania. Oto wdrożenie strtok () Funkcja w C ++:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

Char Str [100];
Cout << " Enter a string: " <Cin.Getline (STR, 100);
char *ptr;
ptr = strtok (str, ",");
Cout << " \n Splitting the string: " << endl;
While (ptr != Null)

Cout << ptr << endl;
ptr = strtok (null, ",");

powrót 0;

strtok () Funkcja jest używana w powyższym kodzie, aby rozbić ciąg wejściowy dostarczany przez użytkownika na tokeny, używając przecinka i przestrzeni jako ograniczników. Następnie publikuje każdy token do konsoli na osobnej linii. Odbywa się to poprzez przechowywanie ciągu wejściowego w tablicy char, iterując tokeny za pomocą wskaźnika char, a następnie wielokrotnie dzieląc ciąg, aż wszystkie tokeny zostaną wyświetlone.

Wyjście

3: Korzystanie z klasy StringStream

Używając klasa to kolejna technika podziału sznurka w C++. Możliwe jest wprowadzenie i wysyłanie danych sformatowanych, w tym ciąży, korzystając z tej klasy. Ciąg, który jest obsługiwany jako strumień, może mieć wyodrębnione z niego podjazdy za pomocą getline () metoda. getline () Metoda wyodrębni podłoże do ogranicznika, jeśli podamy jej ogranicznik jako parametr.

Oto ilustracja, jak to Podziel ciąg w C++ używając stringstream () funkcjonować.

#włączać
#włączać
#włączać
#włączać
int main ()
std :: String input_string = "Apple, banan, wiśnia";
STD :: wektor tokeny;
std :: stringStream SS (input_string);
std :: Token string;
while (std :: getline (ss, token, ','))
tokeny.push_back (token);

dla (auto t: tokeny)
STD :: Cout << t << std::endl;

powrót 0;

W powyższym kodzie znakowanie jest używane do podziału ciągu wejściowego na tokeny za pomocą . Przed wydobyciem każdego tokenu z Korzystając z ograniczenia, program inicjuje obiekt z ciągiem wejściowym. Wektor ciągów jest następnie rozszerzany przez każdy token. Następnie program zapętla się przez wektor, drukując każdy token do konsoli na końcu.

Wyjście

Wniosek

Podzielanie łańcucha za pomocą ogranicznika jest skutecznym podejściem w C ++ i istnieje kilka wbudowanych funkcji w C ++, które umożliwiają dzielenie ciągów. Funkcje te obejmują find (), substr (), strtok () I Stringstream klasa. Programiści powinni rozważyć szczególne wymagania ich aplikacji i wybrać funkcję, która najlepiej dla nich działa.