Usuń spacje z ciągu C ++

Usuń spacje z ciągu C ++
Nasze dane mogą od czasu do czasu zawierać dodatkowe przestrzenie, które mogą powodować problemy podczas analizy danych. Kiedy nastąpi potrzeba, przydatne jest wiedza o tym, jak usunąć dodatkowe przestrzenie, takie jak zakładki, kanały linii i zwroty. Oto kilka wyjaśnień, dlaczego przestrzenie należy usunąć z ciągów:
  • Niepotrzebne przestrzenie na początku, na końcu, a nawet w środku
  • Próbuję dowiedzieć się, ile znaków jest w ciągu
  • Próba zorganizowania zestawu strun
  • Kiedy porównane są dwa struny
  • Dodanie adresu URL do strony

Jeśli nasz kod C ++ napotka przestrzenie podczas wykonywania któregokolwiek z tych poprzednich operacji, otrzymamy nieoczekiwane wyniki, takie jak niewłaściwe liczba znaków, niepoprawnie posortowane listy, niedokładne porównania ciągów i uszkodzone adresy URL. Domyślnie są one uważane za postacie białych, ja.mi., „\ N”, „\ t”, „”, „\ v”, „\ r”, „f”.

Czasami ważne jest, aby usunąć przestrzeń z strun w programowaniu, aby uniknąć nieoczekiwanych wyników. Dowiedz się, jak usuwać przestrzenie z ciągów i jak radzić sobie z dodatkowymi przestrzeniami z tym artykułem.

Przykład 1: Korzystanie z metody :: ISSPACE do usuwania białej listy z łańcucha w C++

Aby wyodrębnić znaki białych z STD :: Strings, wspólnym podejściem jest wykorzystanie STD :: Usuń metodę. Algorytm STD :: Usuń_IF nie eliminuje skutecznie znaków z łańcucha, ale raczej przesuwa wszystkie znaki z nie-białymi przestrzeniami z przodu i wytwarza iterator odnoszący się do końca. Metoda std :: remove_if wymaga predykatu, który decyduje, które znaki wymazują z łańcucha.

Metoda ISSPACE () jest tą, która jest określona w nagłówku CCTYPE i wyszukuje znaki Whitespace Kategoryzowane według zainstalowanej lokalizacji C.

Poniższy przykład zaczyna się od głównej funkcji. Deklaracja standardowej klasy stringowej jest zdefiniowana w głównej metodzie. Zmienna łańcuchowa jest zdefiniowana jako „Str” i jest inicjowana z ciągiem zawierającym znaki białych. Aby usunąć białe listy z łańcucha, zastosowaliśmy normalną procedurę usuwania.

Użyliśmy metody STD :: DESMEL_IF. W metodzie STD :: DESCE_IF przekazaliśmy funkcję „:: ISPACE” w poszukiwaniu postaci białych w danym ciągu. Ciąg po usunięciu białych listy zostanie wydrukowany na następującym ekranie:

#włączać
#włączać
#włączać
#włączać
int main ()

std :: string str = "c \ n \ nplusplus";
str.Erase (std :: usuń_if (str.początek (), str.end (), :: ispspace), str.koniec());
STD :: Cout<< "String:"<< str<<"\n";
powrót 0;

Jak widać, nie można znaleźć znaku Whitespace w poniższym wyświetlanym ciągu:

Przykład 2: Korzystanie z metody STD :: ISSPACE do usuwania białej listy z ciągu w C++

W tym przykładzie używamy standardowej metody powiązania, aby usunąć białe znak z ciągu, wywołując funkcję STD :: ISSPACE. Zamiast zależeć od klasyfikacji znaków Whitespace przez C, możemy użyć std :: ISSPACE reprezentowany w lokalizacji nagłówka, w którym aspekt CTYPE określonego region.

Wiązanie funkcji z symbolami zastępczymi pozwala zmienić pozycję i ilość wartości, które funkcja będzie wykorzystywana, zmieniając funkcję na podstawie pożądanego wyniku.

Ciąg jest zdefiniowany jako „str_n” w głównej i jest inicjowany ze słowem łańcucha o znakach między nimi. W tym miejscu wywołaliśmy metodę usuwania ciągu „str_n”, w której używane są dwie funkcje std :: usuń_if i std ::. Zauważ, że użyliśmy STD :: ISSPACE w funkcji BIND do znalezienia białej listu w ciągu; Następnie metoda wymazania usunie białe znak z łańcucha i zwróci nowy ciąg wyników.

#włączać
#włączać
#włączać
#włączać
#włączać
int main ()

std :: String str_n = "White \ n \ nSpaces";
str_n.Erase (std :: usuń_if (str_n.zaczynać(),
str_n.koniec(),
STD :: BIND (std :: ispspace,
std :: zastępcy :: _ 1,
STD :: LOCALE :: Classic ()
)),
str_n.koniec());
STD :: Cout<< "String:"<powrót 0;

Po opracowaniu poprzedniego programu powłoka wyświetla znaki inne niż Whitespace.

Przykład 3: Korzystanie z metody Unary to Usunięcie białych od sznurków w C++

Zamiast używać :: ispspace lub std :: ISSPACE, możemy utworzyć niestandardowy warunek, który zwraca true, jeśli postać jest znakiem białym lub fałszywym. Stworzyliśmy naszą niewielką metodę usuwania znaków białych z ciągu.

Stworzyliśmy nierzasną metodę „myfunkcji” typu danych Bool. Funkcja przeszła wraz z argumentem niepodpisanej zmiennej charm „mychar”. Wewnątrz funkcji mamy warunek powrotu, który zwraca określony znak Whitespace, jeśli zostanie znaleziony w ciągu.

Następnie mamy główną funkcję, w której ciąg jest generowany jako „MyString” i zawiera znaki ciągów z znakami białymi. Metoda usuwania jest stosowana poniżej w deklaracji stringowej, w której usuń_f. I funkcja „myfunkcja” nazywana jest wymazaniem znaków białych.

#włączać
#włączać
#włączać
Bool Myfunction (unsigned char miar)
return (mychar == "|| mychar == '\ n' || mychar == '\ r' ||
Mychar == '\ t' || Mychar == '\ v' || Mychar == '\ f');

int main ()

std :: String MyString = "MC \ n \ ndonald";
MyString.Erase (std :: usuń_if (mystring.początek (), MyString.end (), myFunction), mystring.koniec());
STD :: Cout<< "String:" <powrót 0;

Wynikowy ciąg ma wszystkie znaki inne niż Whitespace pokazane na następującym ekranie powłoki:

Przykład 5: Korzystanie z metody Regex do usuwania białej listy z łańcucha w C++

Metoda Regex zastępuje () zastępuje wzór wyrażenia regularnego ciągiem zawierającym znaki białych. Omów to z przykładową demonstracją.

Program C ++ zawiera plik Regex w sekcji nagłówka, aby uzyskać dostęp do funkcji Regex_replace w programie. Int Main jest zdefiniowany, który ma integralną reprezentację ciągów z znakami Whitespace w zmiennej string „Stringis”. Następnie nazwaliśmy funkcję Regex w reprezentacji Regex i przekazaliśmy zmienną ciągną „Stringis” z operatorem „+”. Funkcja Regex_replace jest wywoływana przez zmienną ciąg „Stringis” do usuwania białych znaków lub znaków białych z podanego ciągu:

#włączać
#włączać
#włączać
int main ()

std :: String stringis = "1 \ n \ n2 \ n \ n3 \ n \ n4 \ n \ n5";
std :: Regex regx („\\ stringis+”);
Stringis = std :: Regex_replace (Stringis, regx, „”);
STD :: Cout<powrót 0;

Regex Wymień usuwa znaki Whitespace z ciągu całkowitego, który jest wydrukowany w powładzie poleceń Ubuntu.

Wniosek

W ten sposób możemy usunąć znaki Whitespace z ciągu w C ++ za pomocą różnych metod omówionych w tym artykule. Mamy wszystkie demonstracje tych przykładów z wynikowym wynikiem programu. Masz wystarczającą liczbę metod zastępowania lub usuwania białych przestrzeni z ciągów C ++. Wybierz dowolne metody, które Cię przyciągają, a jednocześnie są odpowiednie dla sytuacji.