Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
Poprzednia lekcjaKurs C++Następna lekcja

Biblioteka <string>

1. Bardziej profesjonalne podejście do tekstu

Jak już wspomniałem język C++ był rozwijany latami i między innymi efektem tych prac jest biblioteka string. Do tej pory wczytywanie tekstu wiązało się z koniecznością podawania maksymalnej długości tekstu, jaki może być wczytany. Klasa ta daje dużo większe możliwości i eliminuje ten problem z życia codziennego programisty.

1.1. Co to jest klasa

Klasa to bardziej złożony typ danych, posiadający własne zmienne i funkcje. Większe szczegóły nie są na tym etapie Tobie potrzebne.

2. Jak korzystamy z klasy string

Klasa string, umieszczona jest w przestrzeni nazw std::. Nazwa string stanowi typ zmiennej. Deklaracja zmiennej wygląda więc następująco:

std::string nazwa_zmiennej;

Wczytywanie i zapisywanie tekstu za pomocą cin i cout odbywa się dokładnie tak samo, jak w przypadku zwykłej zmiennej. Skoro jednak można wczytać dowolnie długi tekst może się pojawić w tym miejscu nurtujące pytanie: jakiego rozmiaru jest ta zmienna i ile pamięci pochłania? Odpowiedź jest napawająca optymizmem i brzmi następująco: zmienna zajmuje niewiele więcej bajtów, niż długość tekstu. Jak to się dzieje? Klasa string dynamicznie zarządza danymi i alokuje bądź zwalnia sobie pamięć w zależności od potrzeb. Programista może się cieszyć prostotą użycia tej klasy, a klasa string wykonuje za niego brudną robotę.

3. Poznajemy klasę string

Jak zapewne już zauważyłeś funkcje, których używałeś do sprawdzania długości tekstu, czy też do wczytania tekstu za pomocą gets nie działają dla typu string. Ponieważ klasa zarządza dynamicznie pamięcią to również w tym celu zostały stworzone odpowiednie funkcje, dostosowane do takiego podejścia do tekstu.

3.1. Sprawdzamy długość tekstu

Aby sprawdzić długość tekstu jaki znajduje się w zmiennej string, musimy wywołać funkcję, która znajduje się wewnątrz klasy string. Zadanie to może brzmieć strasznie, ale jak zobaczysz jest to bardzo prosta i wygodna sprawa. Oto przykład:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  string wyraz;
  cout<<"Podaj tekst: ";
  cin>>wyraz;
  cout<<"Wprowadziles: \""<<wyraz<<"\""<<endl;
  cout<<"Długosc wyrazu: "<<wyraz.length()<<endl;
  getch();
  return(0);
}

Jak widać, wywołanie funkcji length(), znajdującej się wewnątrz klasy string spowodowało wypisanie długości zmiennej z której nastąpiło wywołanie. Tutaj wywołaliśmy tą funkcję dla zmiennej wyraz.

4. Wczytywanie wiersza znaków

W celu wczytania wiersza znaków, tym razem posłużymy się funkcją std::getline. Funkcja przyjmuje trzy parametry. Pierwszym z nich jest strumień, z którego dane mają zostać wczytane. Do drugiego parametru podajemy nazwę zmiennej typu string, do której dane mają zostać zapisane. Trzeci parametr jest opcjonalny. Informuje on o tym kiedy ma zakończyć się wczytywanie danych (jaki znak oznacza koniec wczytywania danych) i domyślnie przyjmowaną wartością dla tego parametru jest '\n', czyli znak końca lini (enter). Przykład:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  string wyraz;
  cout<<"Podaj tekst: ";
  getline(cin,wyraz);
  cout<<"Wprowadziles: \""<<wyraz<<"\""<<endl;
  cout<<"Długosc wyrazu: "<<wyraz.length()<<endl;
  getch();
  return(0);
}

5. Łączenie tekstów

Klasa string ma bardzo wiele pożytecznych i wygodnych funkcji. Jednak oprócz tego posiada jeszcze jedną bardzo ważną i wygodną własność: łatwe łączenie tekstów ze sobą. Jeśli mamy dwie lub więcej zmiennych typu string i chcemy je połączyć tak, aby dostać zmienną w której będziemy mieli wszystkie teksty połączone razem wystarczy wykorzystać do tego operator matematyczny +. Poniższy przykład demonstruje tą własność.

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  string wyraz,nastepny,wynik;
  cout<<"Podaj tekst: ";
  getline(cin,wyraz);
  cout<<"Podaj drugi tekst: ";
  getline(cin,nastepny);
  wynik=wyraz+" wlasny napis "+nastepny;
  cout<<"Polaczony tekst to: \""<<wynik<<"\""<<endl;
  cout<<"Długosc tekstu: "<<wynik.length()<<endl;
  getch();
  return(0);
}

6. Podsumowanie rozdziału

Informacje jakie znalazły się w tym rozdziale są tak naprawdę wstępem do klasy string i jej wykorzystywania. Wiadomości te powinieneś poszerzać we własnym zakresie w miarę potrzeb. W tym kursie opisuję tylko te funkcje, które wydają mi się najbardziej użyteczne i są najczęściej wykorzystywane przez programistów.



Poprzednia lekcjaKurs C++Następna lekcja

Wszelkie prawa zastrzeżone. Autor: Piotr Szawdyński
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści bez wyraźnej zgody jego autora jest zabronione.


PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:22
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:736
Non-cookie 24h:2138
Wszystkich:214808
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish134 godz
wiewiorka10 godz
Koni11 godz
BuZuz11 godz
Prezmen13 godz
trupank14 godz
szczgl15 godz
filipesq15 godz
KRIIS55117 godz
kuba181717 godz
extra218 godz
pixelmaster19 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL