Podstawy Programowania - Instytut Informatyki Teoretycznej i

Transkrypt

Podstawy Programowania - Instytut Informatyki Teoretycznej i
Podstawy Programowania
dr Elżbieta Gawrońska
[email protected]
Instytut Informatyki Teoretycznej i Stosowanej
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
1 / 15
Plan wykładu
1
Biblioteka cstring
2
Typ std::string
3
Funkcje bazowe dla typu string
4
Inne funkcje (składowe) dla typu string
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
2 / 15
Biblioteka cstring
Wybrane elementy I
char *strcpy(char *dest, const char *src);
kopiuje tekst src do dest łacznie
˛
ze znakiem końca stringu, zwraca
dest
char *strncpy(char *dest, const char *src, size_t n);
kopiuje co najwyżej n znaków z tekstu src do dest, jeśli src ma mniej
niż n znaków, dopełnia dest znakami ’\0’, zwraca dest
char *strcat(char *dest, const char *src);
dopisuje znaki tekstu src na koniec tekstu dest, zwraca dest
char *strncat(char *dest, const char *src, size_t n);
dopisuje co najwyżej n znaków tekstu src na koniec tekstu dest, zwraca
dest
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
3 / 15
Biblioteka cstring
Wybrane elementy II
przykład:
const char s1 [ ] = " Ala ma kotka " ;
char s2 [ 2 0 ] , s3 [ 2 0 ] ;
strcpy ( s2 , s1 ) ;
cout << s2 << endl ; / / Ala ma k o t k a
strncpy ( s3 , s2 , 7 ) ;
cout << s3 << endl ; / / Ala ma
strcat ( s3 , " pieska " ) ;
cout << s3 << endl ; / / Ala ma p i e s k a
strncat ( s3 , " !!!!! " , 3 ) ;
cout << s3 << endl ; / / Ala ma p i e s k a ! ! !
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
4 / 15
Biblioteka cstring
Wybrane elementy III
int strcmp(const char *s1, const char *s2);
porównuje tekst zawarty w s1 i s2, zwraca wartość:
mniejsza˛ od 0 dla s1 < s2
0 dla s1 == s2
wi˛eksza˛ od 0 dla s1 > s2
przykład:
const char ∗ str1 = " Ala ma kota " ;
const char ∗ str2 = " Ala ma kotka " ;
cout << strcmp ( str1 , str1 ) << endl ; / / 0
cout << strcmp ( str1 , str2 ) << endl ; / / −1
cout << strcmp ( str2 , str1 ) << endl ; / / 1
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
5 / 15
Biblioteka cstring
Wybrane elementy IV
int strncmp(const char *s1, const char *s2, size_t n);
analogiczna do strcmp, ale porównujaca
˛ co najwyżej n znaków
size_t strlen(const char *s);
zwraca długość tekstu s
przykład:
const char ∗ str1 = " Ala ma kota " ;
const char ∗ str2 = " Ala ma kotka " ;
cout << strncmp ( str1 , str1 , 6 ) << endl ; / / 0
cout << strncmp ( str1 , str2 , 6 ) << endl ; / / 0
cout << strncmp ( str2 , str1 , 6 ) << endl ; / / 0
cout << strlen ( str1 ) << endl ; / / 11
cout << strlen ( str2 ) << endl ; / / 12
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
6 / 15
Typ std::string
Typ napisowy I
typ std::string jest definiowany w bibliotece STL, aby go używać
należy dołaczyć
˛
plik nagłówkowy string
typ std::string upodabnia korzystanie z napisów do typów
podstawowych, mi˛edzy innymi pozwala na przypisanie i porównanie:
przykład:
std : : string s1 = " Ala ma kota " ;
std : : string s2 = s1 ;
s1 = " Ola i Jola " ;
std : : cout << s1 << std : : endl << s2 ;
if ( s1 == s2 ) std : : cout << " Napisy sa takie same " ;
if ( s1 ! = s2 ) std : : cout << " Napisy sa rozne " ;
if ( s1 < s2 ) std : : cout << " Napis pierwszy jest mniejszy " ;
Równocześnie możliwe jest wykorzystanie typu std::string, w
podobny sposób jak tablicy znakowej:
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
7 / 15
Typ std::string
Typ napisowy II
przykład:
std : : string a = " Ala ma kota " ;
a [ 3 ] = ’X ’ ;
std : : cout << a ; / / w y s w i e t l i : AlaXma k o t a
Inne przydatne operatory dla typu std::string:
przykład:
std : : string a = " Ala " , b = " kot " , c ;
c = a + b;
std : : cout << c ; / / w y s w i e t l i : A l a k o t
a += b ;
std : : cout << a ; / / w y s w i e t l i : A l a k o t
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
8 / 15
Typ std::string
Funkcje (składowe) dla typu string I
size_t size();
zwraca długość napisu (size_t length();)
const char* c_str();
zwraca napis przechowywany w zmiennej typu string w postaci tablicy
znakowej char *
bool empty();
zwraca prawd˛e, jeśli napis jest pusty
void clear();
czyści cały string, równoznaczne z erase();
string& erase(size_t pos = 0, size_t n = npos)
usuwa n znaków poczawszy
˛
od znaku na pozycji pos (npos jest
interpretowane jako “tak dużo, jak to możliwe”)
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
9 / 15
Typ std::string
Funkcje (składowe) dla typu string II
string& insert(size_t pos, const string& s);
string& insert(size_t pos, const char* s);
umieszcza napis s przed pozycja˛ pos, w przypadku gdy pos wi˛eksze od
długości stringa funkcja powoduje bład
˛
size_t find(const string& s, size_t pos = 0);
size_t find(const char* s, size_t pos = 0);
szuka napisu s w stringu poczawszy
˛
od znaku pos, zwraca indeks
pierwszego znaku znalezionego podciagu
˛ s, w przypadku gdy szukany
podciag
˛ nie zostanie znaleziony funkcja zwraca npos
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
10 / 15
Typ std::string
Funkcje (składowe) dla typu string III
przykład:
string s1 = " Ala lubi kotka " ;
cout << s1 . size ( ) << endl ;
string s2 ;
if ( s1 . empty ( ) == false ) cout << " s1 nie jest pusty " << endl ;
if ( s2 . empty ( ) == true ) cout << " s2 jest pusty " << endl ;
/ / c o n s t c h a r ∗ c s t r = s1 ; / / b l a d ! ! !
const char ∗ cstr = s1 . c_str ( ) ;
s1 . insert ( 1 2 , " ecz " ) ;
cout << s1 << endl ; / / Ala l u b i k o t e c z k a
string s3 = " malego " ;
s1 . insert ( 9 , s3 ) ;
cout << s1 <<endl ; / / Ala l u b i malego k o t e c z k a
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
11 / 15
Typ std::string
Funkcje (składowe) dla typu string IV
przykład:
string s1 = " Ala nie lubi koteczka " ;
s1 . erase ( 3 , 4 ) ;
cout << s1 << endl ; / / Ala l u b i k o t e c z k a
s1 . clear ( ) ;
if ( s1 . empty ( ) ) cout << " s1 zostal wyczyszczony " << endl ;
string s2 = " Ala lubi kotka , a kotek lubi Ale ." ;
size_t i1 = s2 . find ( " kot " ) ;
string s3 = " kot " ;
size_t i2 = s2 . find ( s3 , i1 + 1) ;
cout << s2 << endl ;
cout << " Pierwszy kot : " << i1 << " drugi kot : " << i2 << endl ;
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
12 / 15
Typ std::string
Operacje wejścia–wyjścia dla typu std::string I
Dla typu std::string zdefiniowane sa,˛ analogicznie do typów
wbudowanych, operatory “<<” i “>>”
Funkcja getline pobiera kolejne znaki ze strumienia wejściowego is i
wstawia do łańcucha str, do momentu wystapienia
˛
znaku delim:
istream& getline
(istream& is, string& str, char delim = ’\n’);
gdzie is jest strumieniem wejściowym (np. cin), str zmienna˛ typu
std::string, do której zostanie wczytana zawartość strumienia do
napotkania w nim znaku delim
przykład:
string s ;
getline ( cin , s , ’,’ ) ;
/ / z k l a w i a t u r y podajemy : Ala ma k o t k a , a k o t e k ma Ale !
cout << s << endl ; / / Ala ma k o t k a
getline ( cin , s , ’! ’ ) ;
cout << s << endl ; / / a k o t e k ma a l e
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
13 / 15
Funkcje bazowe dla typu string
void swap (string& s1, string& s2);
zamienia zawartość obiektów łańcuchowych s1 i s2
istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);
pobiera kolejne znaki ze strumienia wejściowego is i wstawia do
˛
znaku delim. Pobieranie
łańcucha str, do momentu wystapienia
zatrzymuje si˛e również po napotkaniu jakiegokolwiek bł˛edu podczas
operacji wejścia:
eofbit – osiagni˛
˛ eto koniec wczytywanego pliku
failbit – wystapił
˛ bład
˛ logiczny w operacjach I/O
badbit – wystapił
˛ bład
˛ zapisu/odczytu w operacjach I/O
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
14 / 15
Inne funkcje (składowe) dla typu string
Inne funkcje składowe typu string, które warto poznać:
string& assign (const string& str);
przypisuje nowa˛ zawartość do łańcucha zast˛epujac
˛ dotychczasowa˛ treść,
size_t find_first_of (const string& str, size_t pos = 0)
const;
przeszukuje napis i zwraca pozycj˛e pierwszego wystapienia
˛
szukanego
ciagu
˛ znaków,
size_t find_last_of (const string& str, size_t pos =
npos) const;
string substr (size_t pos = 0, size_t n = npos) const;
wyciaga
˛ podciag
˛ znaków poszukiwany w danym napisie
dr Elżbieta Gawrońska (ICIS)
Podstawy Programowania 05
15 / 15

Podobne dokumenty