|
Standardowe udogodnienia biblioteki języka C++, dedykowane przetwarzaniu napisów, pozostawiają wiele do życzenia. Wielu programistów uważa, że klasa std::string to jedna z większych wpadek twórców standardu tego języka. Szablon std::basic_string jest przykładem klasy o rozdmuchanym, niespójnym interfejsie, mało intuicyjnej w użyciu, udającej kontener STL, ale nie będącej nim do końca i nieelastycznej. Jeśli nie wierzysz, to spróbuj przy pomocy std::basic_string wykonać operację przycięcia zbędnych znaków (np. spacji) z początku i końca napisu (ang. trimming).
Oczywiście, da się to zrobić - po uprzednim zapoznaniu się z takimi metodami klasy std::string jak find_first_not_of, find_last_not_of oraz erase (patrz: Listing 1). Ale czy nie można by zrobić tego prościej…? A co w sytuacji, kiedy nasz napis reprezentowany jest jako wektor char’ów?
Zanim załamiesz ręce, poczekaj! Na szczęście - jest…
…światełko w tunelu……w postaci biblioteki Boost String Algorithms. Biblioteka ta oferuje uogólnione (ang. generic) implementacje algorytmów działających na napisach, których brakuje w bibliotece standardowej języka C++. Algorytmy te można sklasyfikować w ramach kilku podstawowych grup: operacje przycinania napisów (ang. trimming), operacje konwersji znaków (ang. case conversion) oraz funkcje służące do wyszukiwania, zamiany i usuwania ciągów znaków (ang. search, replace, erase).
Boost String Algorithms skonstruowana jest w sposób, który nie ogranicza jej do współpracy z jednym, z góry narzuconym typem kontenera (np. std::string). W kontekście tej biblioteki pojęcie napis oznacza sekwencję znaków przechowywanych w dowolnym kontenerze. Podobnie, pod pojęciem znak niekoniecznie muszą kryć się typy char i wchar_t.
Prezentowana biblioteka jest częścią pakietu Boost; jako że składa się ona z samych plików nagłówkowych, jej konfiguracja jest bardzo prosta: wystarczy pouczyć kompilator, gdzie ma szukać nagłówków.
Więcej informacji na temat konfiguracji biblioteki znajdziesz w ramce Szybki Start.
Pierwszy przykładZanim rozważymy szczegółowo możliwości biblioteki Boost String Algorithms, spójrzmy na krótki, prosty przykład jej użycia (patrz: Listing 2).
Zadanie, które ma zrealizować nasz przykład, jest bardzo proste: chcemy usunąć białe znaki z początku i końca napisu, a następnie stworzyć nowy napis będący kopią poprzedniego, z tą różnicą, że wszystkie litery z oryginalnego napisu zamienione będą na małe. Boost String Algorithms pozwala zrealizować to zadanie za pomocą dwóch prostych, intuicyjnych funkcji. Morał z tego przykładu jest następujący: nie mając pod ręką odpowiedniej biblioteki, musielibyśmy funkcje do przycinania i konwersji zaimplementować sami. Niby prosta rzecz, aczkolwiek nie do końca. Jeśli tworzony przez nas kod miałby być kodem produkcyjnym, to należałoby poważnie zastanowić się nad takimi aspektami jak: poprawność (szczegółowe rozważenie wszystkich przypadków użycia), wydajność, rozszerzalność, obsługa błędów itd. Trzeba by zapewne zaprojektować i zaimplementować zestaw testów modułowych. Krótko mówiąc, trywialne zdanie, które chcielibyśmy rozwiązać w kilka sekund, urasta nam nagle do rozmiarów tworzenia własnej biblioteki - co już trywialnym zadaniem nie jest.
Dla odmiany, Boost String Algorithms daje nam dokładnie to, czego potrzebujemy: proste, dobrze przetestowane, wydajne implementacje operacji na napisach. Wystarczy dołączyć właściwy nagłówek (#include <boost/algorithm/string.hpp>) i po kłopocie. Aż chciałoby się zacytować motto użytkowników języka Perl: niechaj proste rzeczy pozostaną proste. |
|
Tags:
mambo ,
programowanie ,
czasopisma ,
php-Fusion ,
joomla ,
Moja Teneryfa , Białowieża , Kenia wycieczki
|
|
Adres www: http://www.czasopisma.org | |
Powiązane strony:
| Blog ITtechnology.info to miejsce, w którym każdy znajdzie zbiór praktycznych porad z różnych dziedzin i... | Na łamach serwisu www.drukarniaskarbowa.pl odnajdziemy ofertę renomowanej na naszym polskim rynku drukarni s... |
| Robienie stron internetowych to proces raczej długi oraz żmudny. Wszystko opiera się bowiem o język, w jak... | Zdecydowana większość dostępnych aktualnie narzędzi do zdalnej administracji systemem linux ma interfejs ... |
| Najczęstszym sposobem wyszukiwania odpowiedzi na nurtujące nas pytania wbrew pozorom nie jest najbliższa na... | Firma Direktpoint zajmuje się kreacją i produkcją dla nowych mediów. Realizujemy cele wyznaczone przez kli... |
Inne strony:
| Szukasz kogoś, kto produkuje strony internetowe a Kraków jest jego miejscem pracy? Dobrze trafiłeś! Robimy... | Katalog stron w Internecie to zajmująca sprawa, którą musi zainteresować się każdy, kto szuka promocji w... |
| Telepresence pozwala firmom przenieść tradycyjny model biznesowy na płaszczyznę/zakład produkcyjny opart... | Dysponujemy swoje zaplecze techniczne, dzięki któremu nie musimy korzystać z usług podwykonawców co znacz... |
| Darmowe Wróżby. Wróżby za sms.. Na Naszej stronie dostaniesz wiele popularnych wróżb, jak wróżby andrz... | Forex to największy na świecie rynek walutowy. Dzięki popularności sieci stał się osiągalny nie tylko d... |
