Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
Kurs C++

Zmienne przechowujące tekst

[lekcja] Rozdział 23. W niniejszym rozdziale opisano typ zmiennej wykorzystywany do pracy z tekstem w języku C++. Rozdział omawia podstawowe zagadnienia takie jak: tworzenie zmiennej tekstowej, ustawianie tekstu, sklejanie tekstu, wczytywanie wyrazu za pomocą standardowego strumienia wejściowego do zmiennej tekstowej oraz wypisywanie zawartości zmiennej tekstowej przy pomocy standardowego strumienia wyjściowego.
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:
C/C++
std::string nasza_zmienna_tekstowa;
Zmiennej tekstowej można nadać oczywiście początkową wartość:
C/C++
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:
C/C++
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:
C/C++
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:
C/C++
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ć:
C/C++
std::string zmienna;
std::cin >> zmienna;

Ustawianie nowego tekstu dla zmiennej

Żeby za dużo nie pisać o rzeczach trywialnych, napiszę po prostu kod:
C/C++
std::string zmienna = "stary tekst";
zmienna = "nowy tekst";

Sklejanie tekstów

Do sklejania tekstów służy operator dodawania:
C/C++
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:
C/C++
std::string napis = "pierwszy ";
napis += "drugi ";
napis += "trzeci";
napis += "czwarty";
Nie możesz jednak sklejać tekstów następująco:
C/C++
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:
C/C++
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.:
C/C++
std::string zmienna = "abc";
zmienna = ""; //o tym mowa
Drugim sposobem jest wywołanie odpowiedniej metody, która wchodzi w skład narzędzia
std::string
:
C/C++
std::string zmienna = "abc";
zmienna.clear(); //tym razem o tym mowa

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.
Poprzedni dokument Następny dokument
Poziom 3 Przekazywanie argumentów funkcji przez referencję