Praca z tekstem jest nieodłączną częścią współczesnego życia. Na co dzień tekst czytamy jak również go piszemy - to w zeszytach na zajęciach, to w rozmowach toczonych za pomocą współczesnych komunikatorów Internetowych. Dzisiaj chyba nikt nie potrafiłby sobie wyobrazić życia bez tej uniwersalnej metody komunikacji. Skoro tekst jest taki ważny to dobrze będzie jeżeli będziemy mieli możliwość pracy z nim w naszych aplikacjach.
Tekst w C++
Wraz z wprowadzeniem obiektowości w języku C++ powstało również narzędzie do pracy z tekstem. Tym narzędziem jest
std::string
. W niniejszym rozdziale zobaczymy jak się z tego narzędzia korzysta w podstawowym zakresie i stopniowo w następnych rozdziałach niniejszego kursu będziemy poznawali jego kolejne możliwości.
Plik nagłówkowy
Aby mieć możliwość skorzystania z narzędzia
std::string
należy dołączyć plik nagłówkowy
#include <string>
- w nim znajduje się bowiem definicja tego typu danych.
Tworzenie zmiennej tekstowej
Kolejnym krokiem jest utworzenie zmiennej, która będzie przechowywała tekst. Nie ma tu żadnej filozofii - zmienne tworzy się zawsze tak samo, niezależnie od tego co przechowują. Utworzenie zmiennej tekstowej wygląda tak:
std::string nasza_zmienna_tekstowa;
Zmiennej tekstowej można nadać oczywiście początkową wartość:
std::string nasza_zmienna_tekstowa = "to jest jakis tekst";
Tekst podaje się
zawsze w cudzysłowach, zwanych też podwójnymi uszami. Jeżeli nie nadasz początkowej wartości tworzonej zmiennej tekstowej to zmienna będzie przechowywała tekst o zerowej liczbie znaków. Nową wartość zmiennej oczywiście zawsze można nadać później.
Wypisywanie tekstu na standardowe wyjście
Wyświetlanie tekstu za pomocą strumienia
std::cout wygląda dokładnie tak samo jak wypisywanie każdej innej zmiennej typu prostego, czyli np. liczby całkowitej:
std::string nasza_zmienna_tekstowa = "to jest jakis tekst";
std::cout << nasza_zmienna_tekstowa << std::endl;
Bardzo często zdarza się jednak, że funkcje wymagają tekstu zgodnego z zapisem wywodzącym się jeszcze z języka C - wówczas należy wywołać
metodę należącą do
std::string o nazwie
c_str(). W praktyce przekłada się to na dopisanie
.c_str()
za nazwą naszej zmiennej tekstowej i sprawę mamy załatwioną. Przykład:
std::cout << nasza_zmienna_tekstowa.c_str() << std::endl;
O ile w przypadku strumienia
std::cout takie działanie jest sztuką dla sztuki o tyle gdy przyjdzie nam użyć np. funkcji
printf to omówiony zapis będzie już konieczny. Przykład:
printf( "%s\n", nasza_zmienna_tekstowa.c_str() );
Znaczenie słowa metoda zostanie omówione w następnym rozdziale. Na chwilę obecną wyraz ten możesz traktować na równoważni ze znanym Ci już słowem funkcja.
|
Wczytywanie wyrazu ze standardowego wejścia
Wczytywanie wyrazu ze standardowego wejścia jest tak samo proste jak w przypadku liczb. Wystarczy bowiem napisać:
std::string zmienna;
std::cin >> zmienna;
Ustawianie nowego tekstu dla zmiennej
Żeby za dużo nie pisać o rzeczach trywialnych, napiszę po prostu kod:
std::string zmienna = "stary tekst";
zmienna = "nowy tekst";
Sklejanie tekstów
Do sklejania tekstów służy operator dodawania:
std::string napis1 = "pierwszy";
std::string napis2 = " drugi";
std::string napis3 = napis1 + napis2;
Jeżeli chcesz dopisywać tekst do zmiennej możesz zrobić to również tak:
std::string napis = "pierwszy ";
napis += "drugi ";
napis += "trzeci";
napis += "czwarty";
Nie możesz jednak sklejać tekstów następująco:
std::string napis;
napis = "pierwszy " + "drugi ";
Kompilator nie potrafi sklejać stałych łańcuchów znaków, dlatego też konieczne będzie rozbicie powyższego zapisu na kilka linijek. Może to wyglądać np. tak:
std::string napis;
napis = "pierwszy ";
napis = napis + "drugi ";
Wyczyszczenie tekstu w zmiennej
Tekst możesz usunąć ze zmiennej tekstowej w dwojaki sposób - pierwszym jest przypisanie pustego łańcucha znaków do zmiennej, tj.:
std::string zmienna = "abc";
zmienna = "";
Drugim sposobem jest wywołanie odpowiedniej
metody, która wchodzi w skład narzędzia
std::string
:
std::string zmienna = "abc";
zmienna.clear();
Podsumowanie
Jak widać praca z tekstem w C++ jest prosta i nie wymaga niewiadomo jakich umiejętności. W dalszych rozdziałach poznamy ciekawsze aspekty związane z omówionym narzędziem - tymczasem czeka Ciebie prosty program do napisania w ramach zadania domowego :)
Zadanie domowe
Napisz program, który wczyta 10 wyrazów podanych przez użytkownika, a następnie wypisze je wszystkie w jednym wierszu, których kolejne wyrazy będą oddzielone od siebie przecinkami. Przykładowe dane wejściowe:
a b c d e f g h i j
Oczekiwany wynik wyjściowy:
a, b, c, d, e, f, g, h, i, j,
W zadaniu możesz użyć tylko dwóch zmiennych tekstowych.