[Kurs C++] Biblioteka <string>
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
var pageTracker = _gat._getTracker("UA-3650348-1");
pageTracker._initData();
pageTracker._trackPageview();
Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/ Strona główna Kursy Artykuły Forum Pliki Promuj Nas! PowrótHistoria odwiedzonych stronPoprzednia lekcjaKurs C++Następna lekcjaBiblioteka <string>1. Bardziej profesjonalne podejście do tekstuJak 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 klasaKlasa 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 stringKlasa 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ę stringJak 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ść tekstuAby 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ówW 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ówKlasa 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łuInformacje 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 lekcjaWszelkie prawa zastrzeżone. Autor: Piotr SzawdyńskiWszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści bez wyraźnej zgody jego autora jest zabronione.PowrótHistoria odwiedzonych stronPanel LogowaniaLogin:Hasło:Zapamiętaj mnie!Zarejestruj sięOdzyskiwanie hasłaUżytkownikówObecnie aktywnych:6Zalogowanych:0Zarejestrowanych:4367Ostatnie 24h:501Non-cookie 24h:1505Wszystkich:264704Ostatnia Aktualizacja2010-11-23 00:46:20 (38 dni temu)Ostatnio aktywniHandy905 godzPiotr Szawdyński7 godzFletcher23 godzwiew25 godzPietrzuch25 godzmat250134 godzbooncki37 godzRaver59 godzWynajem Sopot - wakacjePokój 2 osobowy 130zł/doba;Lokalizacja: Sopothttp://sopotwynajem.pl
O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinkiRestauracja "ATOL" - Sopot© Wszelkie prawa zastrzeżone 2005-2010Czas wygenerowania strony: 0.087sAutor: Piotr Szawdyński
Wyszukiwarka
Podobne podstrony:
index1index1859INDEX1index1index1ae2index11 Reportindex1c99index1index1zwięcej podobnych podstron