Podstawy programowania - wykład 3 · Łańcuch znaków – w językach C i C++ (oraz pochodnych)...
Transcript of Podstawy programowania - wykład 3 · Łańcuch znaków – w językach C i C++ (oraz pochodnych)...
1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Wykład: 9
Łańcuchy znaków
Podstawy programowania
2
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Łańcuch znaków – w językach C i C++ (oraz pochodnych)
łańcuch znaków przechowywany jest jako tablica znaków
zakończona znakiem o numerze zero (NULL)
A l a m a k o t a /0
0 1 2 3 4 5 6 7 8 9 10 11
3
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Obsługa zmiennych łańcuchowych (łańcuchy znaków)
C++ umożliwia zastosowanie dwóch wariantów:
1. Tablica znaków (wywodzi się z języka C)
2. Użycie klasy bibliotecznej string (częściej spotykane – w
języku c++ oraz językach pochodnych)
4
Tablica znakowa
Podstawy programowania w C++
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
5
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Ciąg znaków (łańcuch) to kolejno zapisane znaki w pamięci.
Dlatego można do jego zapisania użyć tablicy przechowującej
znaki (char).
Maksymalna długość
tablicy
Możliwe jest zainicjalizowanie takiej tablicy łańcuchem znaków
6
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Można też przypisywać znak do każdego pola:
W takim przypadku należy pamiętać o zakończenia listy znakiem
o kodzie zero ‘/0’
7
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Tablice znaków są kłopotliwe w obsłudze. Oto jeden z
problemów:
Błąd – nie można przypisać
łańcucha inne długości
Rozwiązaniem jest potraktowanie tablicy jako wskaźnika na
pierwszy element (char)
8
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wypisywanie tablicy
9
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wczytywanie tablicy
UWAGA - ta metoda wczyta tekst
tylko do pierwszej spacji
(obiekt cin traktuje spacje jako
separator)
10
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wczytywanie tablicy
Drugim sposobem, jaki można tu zastosować jest wykorzystanie
metody getline( ) obiektu cin. Funkcja ta jest ukierunkowana na
wczytywanie całych wierszy.
Bufor to wielkość tej tablicy (tablica może
przechować bufor - 1 znaków + znak końca
tablicy)
11
Tablica znaków
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Funkcja get( ) - może działać podobnie jak getline, z tą różnicą,
że znak nowego wiersza nie jest odrzucany tylko pozostaje w
kolejce wejściowej.
Oznacza to, że ponowne użycie get() nie pobierze ciągu
znaków, ponieważ zakłada, że nastąpił już koniec wiersza.
Aby zaradzić temu problemowi można użyć metody get( ) bez
argumentów. Pobiera ona następny znak, a wiec znak końca
linii zostanie usunięty i można ponownie wczytywać dane
12
Biblioteka string
Podstawy programowania w C++
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
13
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Znacznie więcej możliwości daje zestaw funkcji zawartych w
bibliotece String.
Aby z nich skorzystać należy dołączyć plik nagłówkowy #include <string>
14
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wczytywanie tekstu ze standardowego wejścia
Ten sam problem jaki wystąpił przy
wczytywaniu tablicy znaków –
wczytany zostanie tylko pierwszy
wyraz (do spacji)
Rozwiązanie:
15
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Sklejanie tekstów
16
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Sklejanie tekstów
Taka konstrukcja nie jest dozwolona.
Można ją zastąpić następującą:
17
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Czyszczenie zmiennej łańcuchowej
18
String – jako tablica
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
String może być traktowany jako tablica znaków.
Do określania długości strinag-a służy metoda lenght() obiektu
typu string.
19
String – jako tablica
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Przykład – wypisywanie łańcucha od tyłu
20
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wyszukiwanie znaku
21
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wyszukiwanie znaku
22
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wyszukiwanie znaku
Funkcja find() może przyjmować 2 argumenty.
1. Argument pierwszy to znak poszukiwany, natomiast
2. drugi określa miejsce od którego należy szukać znaku w tekście.
23
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Wyszukiwanie wszystkich wystąpień znaku
24
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Porównywanie łańcuchów
25
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Porównywanie łańcuchów
Łańcuchy można porównywać
„alfabetycznie” – czyli ściślej mówiąc,
po kodzie ASCII znaków.
26
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
substr() – kopiowanie fragmentu z łańcucha
od - do
27
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
replace() – zastępowanie części łańcucha
od – ile znaków - czym Zauważmy – liczba zastępowanych
znaków nie musi być taka sama jak
długość łańcucha który wklejamy.
28
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
insert () – wstawiane znaków do łańcucha
od –- co wstawiamy
29
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
erase () – usuwanie części łańcucha
od –- do
30
String
Łańcuch znaków
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
Zamiana znaku – małe litery <–> duże litery
I odwrotnie..
31
Tablica string-ów
Podstawy programowania w C++
dr Artur Bartoszewski - Podstawy programowania sem. 1 - WYKŁAD
33
Literatura:
W prezentacji wykorzystano przykłady i fragmenty:
• Grębosz J. : Symfonia C++, Programowanie w języku C++ orientowane
obiektowo, Wydawnictwo Edition 2000.
• Jakubczyk K.: Turbo Pascal i Borland C++ Przykłady, Helion.
Warto zajrzeć także do:
• Sokół R. : Microsoft Visual Studio 2012 Programowanie w Ci C++, Helion.
• Kerninghan B. W., Ritchie D. M.: język ANSI C, Wydawnictwo Naukowo
Techniczne.
Dla bardziej zaawansowanych:
• Grębosz J. : Pasja C++, Wydawnictwo Edition 2000.
• Meyers S.: język C++ bardziej efektywnie, Wydawnictwo Naukowo Techniczne
dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD