C_Receptury_cpprec.pdf

(248 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TREŒCI
C++. Receptury
Autorzy: D. Ryan Stephens, Christopher
Diggins, Jonathan Turkanis, Jeff Cogswell
T³umaczenie: Przemys³aw Szeremiota
ISBN: 83-246-0374-3
Tytu³ orygina³u:
C++ Cookbook
Format: B5, stron: 560
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Zbiór rozwi¹zañ dla programistów C++
• Operacje na klasach i obiektach
• Obs³uga b³êdów i wyj¹tków
• Przetwarzanie dokumentów XML
C++ jest jednym z najpopularniejszych jêzyków programowania. Jego implementacje
dostêpne s¹ praktycznie dla wszystkich platform systemowych. Programiœci
pos³uguj¹cy siê jêzykiem C++ napisali setki tysiêcy aplikacji. Codziennie jednak staj¹
przed koniecznoœci¹ rozwi¹zywania podobnych problemów, zwi¹zanych na przyk³ad
z przetwarzaniem dat, manipulowaniem ci¹gami tekstowymi czy stosowaniem
standardowych kontenerów. W takich sytuacjach na pewno zadaj¹ sobie pytanie —
czy warto ponownie wymyœlaæ ko³o? Przecie¿ gotowe rozwi¹zania znacznie
przyspieszy³yby pracê.
Ksi¹¿ka „C++. Receptury” mo¿e pe³niæ funkcjê skarbnicy porad dla programistów.
Znajdziesz w niej rozwi¹zania problemów, z jakimi spotykasz siê w codziennej pracy.
Ka¿da analiza uzupe³niona jest przyk³adowym kodem Ÿród³owym, który mo¿na
wykorzystaæ we w³asnych projektach. Autorzy po³o¿yli szczególny nacisk na prostotê
i przenoœnoœæ kodu oraz wykorzystanie, tam gdzie to mo¿liwe, biblioteki standardowej.
• Kompilowanie aplikacji
• W³aœciwa organizacja kodu Ÿród³owego
• Operacje na liczbach, tekstach i datach
• Stosowanie kontenerów
• Programowanie obiektowe
• Przetwarzanie plików
• Strumienie
• Operacje matematyczne i statystyczne
• Wielow¹tkowoœæ i biblioteka Boost
• Praca z dokumentami XML
Przyspiesz pracê nad aplikacj¹, stosuj¹c gotowe i sprawdzone rozwi¹zania
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Wstęp .............................................................................................................................. 9
1. Tworzenie aplikacji w języku C++ ................................................................................15
1.0. Wprowadzenie do systemów kompilacji
1.1. Pobieranie i instalowanie GCC
1.2. Kompilowanie programu „Hello, World!” w wierszu poleceń
1.3. Kompilowanie biblioteki statycznej w wierszu poleceń
1.4. Kompilowanie biblioteki dynamicznej w wierszu poleceń
1.5. Kompilowanie aplikacji wieloskładnikowej w wierszu poleceń
1.6. Instalowanie pakietu Boost.Build
1.7. Kompilowanie programu „Hello, World!” za pomocą Boost.Build
1.8. Kompilowanie biblioteki statycznej za pomocą Boost.Build
1.9. Kompilowanie biblioteki dynamicznej za pomocą Boost.Build
1.10. Kompilowanie aplikacji wieloskładnikowej za pomocą Boost.Build
1.11. Kompilowanie biblioteki statycznej w IDE
1.12. Kompilowanie biblioteki dynamicznej w IDE
1.13. Kompilowanie aplikacji wieloskładnikowej w IDE
1.14. Pobieranie i instalowanie GNU make
1.15. Kompilowanie programu „Hello, World!” za pomocą GNU make
1.16. Kompilowanie biblioteki statycznej za pomocą GNU make
1.17. Kompilowanie biblioteki dynamicznej za pomocą GNU make
1.18. Kompilowanie aplikacji wieloskładnikowej za pomocą GNU make
1.19. Definiowanie symboli (makrodefinicji)
1.20. Ustalanie opcji wiersza polecenia w IDE
1.21. Kompilacja próbna
1.22. Kompilacja ostateczna
1.23. Wybieranie wersji biblioteki wykonawczej
1.24. Wymuszanie zgodności ze standardem języka C++
1.25. Automatyzacja konsolidacji pliku źródłowego z wybraną biblioteką
1.26. Korzystanie z szablonów eksportowanych
15
28
31
36
38
45
50
52
56
57
58
61
64
68
73
75
82
87
88
92
94
95
98
101
104
107
109
3
2. Organizacja kodu ......................................................................................................... 113
2.0. Wprowadzenie
2.1. Gwarantowanie jednokrotnego włączenia pliku nagłówkowego
2.2. Gwarantowanie obecności jednego egzemplarza zmiennej
dla wielu plików źródłowych
2.3. Ograniczanie włączania nagłówków za pomocą deklaracji zapowiadających
2.4. Unikanie kolizji nazw za pomocą przestrzeni nazw
2.5. Włączanie pliku funkcji inline
113
114
116
117
119
125
3. Liczby ............................................................................................................................127
3.0. Wprowadzenie
3.1. Konwersja ciągu na typ liczbowy
3.2. Konwersja liczb na ciągi
3.3. Sprawdzanie, czy ciąg zawiera poprawną liczbę
3.4. Porównywanie wartości zmiennoprzecinkowych
w zadanym zakresie dokładności
3.5. Przetwarzanie ciągu zawierającego liczbę w zapisie naukowym
3.6. Konwersja pomiędzy typami liczbowymi
3.7. Określanie granicznych wartości typów liczbowych
127
127
130
133
135
137
139
141
4. Ciągi i teksty ................................................................................................................ 145
4.0. Wprowadzenie
4.1. Dopełnianie ciągu
4.2. Przycinanie ciągu
4.3. Zapisywanie ciągów w sekwencji
4.4. Określanie długości ciągu
4.5. Odwracanie ciągu
4.6. Podział ciągu
4.7. Wyodrębnianie elementów leksykalnych
4.8. Scalanie sekwencji ciągów
4.9. Wyszukiwanie w ciągach
4.10. Szukanie n-tego wystąpienia podciągu
4.11. Usuwanie podciągu z ciągu
4.12. Zmiana wielkości liter w ciągu
4.13. Porównywanie ciągów bez uwzględniania wielkości liter
4.14. Wyszukiwanie w ciągu bez uwzględniania wielkości liter
4.15. Zamiana tabulacji na spacje w pliku tekstowym
4.16. Zawijanie wierszy w pliku tekstowym
4.17. Zliczanie znaków, słów i wierszy w pliku tekstowym
4.18. Zliczanie wystąpień poszczególnych słów w pliku tekstowym
4.19. Ustawianie marginesów w pliku tekstowym
4.20. Justowanie tekstu w pliku
4
|
Spis treści
145
146
147
152
155
157
158
160
163
165
168
169
171
173
175
177
179
181
184
186
189
4.21. Eliminowanie nadmiarowych znaków odstępu w pliku tekstowym
4.22. Autokorekta tekstu przy zmianach bufora
4.23. Wczytywanie danych z pliku wartości rozdzielanych przecinkami
4.24. Podział ciągu na podstawie wyrażeń regularnych
191
192
195
197
5. Daty i godziny ............................................................................................................. 199
5.0. Wprowadzenie
5.1. Odczytywanie bieżącej daty i godziny
5.2. Formatowanie ciągów reprezentujących daty i godziny
5.3. Arytmetyka dat i godzin
5.4. Konwersja pomiędzy strefami czasowymi
5.5. Określanie numeru dnia w roku
5.6. Definiowanie typów wartości ograniczonych do zakresu
199
199
202
204
206
207
209
6. Gospodarowanie danymi — kontenery .................................................................... 213
6.0. Wprowadzenie
6.1. Kontenery zamiast tablic
6.2. Efektywne stosowanie wektorów
6.3. Kopiowanie wektora
6.4. Przechowywanie wskaźników w wektorze
6.5. Przechowywanie obiektów na liście
6.6. Kojarzenie danych z ciągami znaków
6.7. Kontenery haszowane
6.8. Sekwencje uporządkowane
6.9. Kontenery w kontenerach
213
214
218
222
224
225
230
235
240
243
7. Algorytmy ................................................................................................................... 247
7.0. Wprowadzenie
7.1. Przeglądanie zawartości kontenera
7.2. Usuwanie obiektów z kontenera
7.3. Tworzenie sekwencji pseudolosowych
7.4. Porównywanie zakresów
7.5. Scalanie danych
7.6. Sortowanie zakresu elementów
7.7. Partycjonowanie zakresu
7.8. Przetwarzanie sekwencji za pomocą operacji dla zbiorów
7.9. Przekształcanie elementów sekwencji
7.10. Własne algorytmy uogólnione
7.11. Wypisywanie elementów zakresu do strumienia
247
248
254
257
259
262
266
268
270
273
275
278
Spis treści
|
5
8. Klasy ............................................................................................................................283
8.0. Wprowadzenie
8.1. Inicjalizowanie składowych klas
8.2. Tworzenie obiektów w funkcjach (wzorzec Factory)
8.3. Konstruktory i destruktory w służbie zarządzania zasobami (RAII)
8.4. Automatyczne dodawanie nowych egzemplarzy klasy do kontenera
8.5. Jedna kopia składowej klasy
8.6. Określanie dynamicznego typu obiektu
8.7. Wykrywanie zależności pomiędzy klasami różnych obiektów
8.8. Nadawanie identyfikatorów egzemplarzom klas
8.9. Tworzenie klasy-jedynaka
8.10. Tworzenie interfejsu z abstrakcyjną klasą bazową
8.11. Pisanie szablonu klasy
8.12. Pisanie szablonu funkcji
8.13. Przeciążanie operatorów inkrementacji i dekrementacji
8.14. Przeciążanie operatorów arytmetycznych i operatorów przypisania
pod kątem intuicyjności zachowania obiektów klasy
8.15. Wywoływanie funkcji wirtualnej klasy bazowej
283
284
287
289
291
293
295
297
298
301
303
307
312
314
317
323
9. Wyjątki i bezpieczeństwo .......................................................................................... 325
9.0. Wprowadzenie
9.1. Tworzenie klasy wyjątku
9.2. Uodpornianie konstruktora klasy
9.3. Uodpornianie listy inicjalizacyjnej konstruktora
9.4. Uodpornianie metod klasy
9.5. Bezpieczne kopiowanie obiektu
325
325
329
332
335
339
10. Strumienie i pliki .........................................................................................................345
10.0. Wprowadzenie
10.1. Wyrównywanie tekstu w kolumnach
10.2. Formatowanie wartości zmiennoprzecinkowych
10.3. Pisanie własnego manipulatora strumienia
10.4. Adaptacja klasy do zapisu obiektów do strumienia
10.5. Adaptacja klasy do odczytu obiektów ze strumienia
10.6. Pozyskiwanie informacji o pliku
10.7. Kopiowanie pliku
10.8. Usuwanie i zmiana nazwy pliku
10.9. Tymczasowe nazwy plików i pliki tymczasowe
10.10. Tworzenie katalogu
10.11. Usuwanie katalogu
10.12. Przeglądanie zawartości katalogu
345
346
350
353
356
359
361
363
366
368
370
372
374
6
|
Spis treści
Zgłoś jeśli naruszono regulamin