[ Pobierz całość w formacie PDF ]

zajmuje każdy napis musi być dostosowywana do jego długości (liczby znaków) i
zmieniać się podczas działania aplikacji. Wymaga to dodatkowego czasu (od programisty
Operacje na zmiennych 129
i od komputera), uwagi oraz dokładnego przemyślenia (przez programistę, nie
komputer ;D) mechanizmów zarządzania pamięcią.
Zwykli użytkownicy pecetów - szczególnie ci, którzy pamiętają jeszcze zamierzchłe czasy
DOSa - także nie mają dobrych wspomnień związanych z danymi tekstowymi. Odwieczne
kłopoty z polskimi  ogonkami nadal dają o sobie znać, choć na szczęście coraz rzadziej
musimy oglądać na ekranie dziwne  krzaczki zamiast znajomych liter w rodzaju ą, ć, ń
czy z.
Wydaje się więc, że przed koderem piszącym programy przetwarzające tekst piętrzą się
niebotyczne wręcz trudności. Problemy są jednak po to, aby je rozwiązywać (lub by inni
rozwiązywali je za nas ;)), więc oba wymienione dylematy doczekały się już wielu bardzo
dobrych pomysłów.
Rozszerzające się wykorzystanie standardu Unicode ograniczyło już znacznie kłopoty
związane ze znakami specyficznymi dla niektórych języków. Kwestią czasu zdaje się
chwila, gdy znikną one zupełnie.
Powstało też mnóstwo sposobów na efektywne składowanie napisów o zmiennej długości
w pamięci komputera. Wprawdzie w tym przypadku nie ma jednego, wiodącego trendu
zapewniającego przenośność między wszystkimi platformami sprzętowymi lub chociaż
aplikacjami, jednak i tak sytuacja jest znacznie lepsza niż jeszcze kilka lat temu48.
Koderzy mogą więc sobie pozwolić na uzasadniony optymizm :)
Wsparci tymi pokrzepiającymi faktami możemy teraz przystąpić do poznawania
elementów języka C++, które służą do pracy z łańcuchami znaków.
Napisy według C++
Trudno w to uwierzyć, ale poprzednik C++ - język C - w ogóle nie posiadał odrębnego
typu zmiennych, mogącego przechowywać napisy. Aby móc operować danymi
tekstowymi, trzeba było używać mało poręcznych tablic znaków (typu char) i samemu
dbać o zagadnienia związane z przydzielaniem i zwalnianiem pamięci.
Nam, programistom C++, nic takiego na szczęście nie grozi :) Nasz ulubiony język jest
bowiem wyposażony w kilka bardzo przydatnych i łatwych w obsłudze mechanizmów,
które udostępniają możliwość manipulacji tekstem.
Rozwiązania, o których będzie mowa poniżej, są częścią Biblioteki Standardowej języka
C++. Jako że jest ona dostępna w każdym kompilatorze tego języka, sposoby te są
najbardziej uniwersalne i przenośne, a jednocześnie wydajne. Korzystanie z nich jest
także bardzo wygodne i łatwe.
Oprócz nich istnieją również inne metody obsługi łańcuchów znaków. Na przykład
biblioteki MFC i VCL (wspomagające programowanie w Windows) posiadają własne
narzędzia, służące temu właśnie celowi49. Nawet jeżeli skorzystasz kiedyś z tych
bibliotek, będziesz mógł wciąż używać opisanych tutaj mechanizmów standardowych.
Aby móc z nich skorzystać, należy przede wszystkim włączyć do swojego kodu plik
nagłówkowy string:
#include
Po tym zabiegu zyskujemy dostęp do całego arsenału środków programistycznych,
służących operacjom tekstowym.
48
Dużą zasługę ma w tym ustandaryzowanie języka C++, w którym powstaje ponad połowa współczesnych
aplikacji. W przyszłości znaczącą rolę mogą odegrać także rozwiązania zawarte w platformie .NET.
49
MFC (Microsoft Foundation Classes) zawiera przeznaczoną do tego klasę CString, zaś VCL (Visual Component
Library) posiada typ String, który jest częścią kompilatora C++ firmy Borland.
Podstawy programowania
130
Typy zmiennych tekstowych
Istnieją dwa typy zmiennych tekstowych, które różnią się rozmiarem pojedynczego
znaku. Ujmuje je poniższa tabelka:
nazwa typ znaku rozmiar znaku zastosowanie
std::string char
1 bajt tylko znaki ANSI
std::wstring wchar_t
2 bajty znaki ANSI i Unicode
Tabela 6. Typy łańcuchów znaków
std::string jest ci już dobrze znany, gdyż używaliśmy go niejednokrotnie. Przechowuje
on dowolną (w granicach dostępnej pamięci) ilość znaków, z których każdy jest typu [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • agnos.opx.pl
  •