C++ Biblioteka IOStreams i lokalizacja programow.pdf

(500 KB) Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW Y ROZDZIA£
C++. Biblioteka IOStreams
SPIS TRECI
i lokalizacja programów
KATALOG KSI¥¯EK
Autorzy: Angelika Langer, Klaus Kreft
T³umaczenie: Przemys³aw Szeremiota
ISBN: 83-7361-739-6
Format: B5, stron: 608
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Opanuj biblioteki strumieni i lokalizacji
• Poznaj budowê i architekturê biblioteki strumieni
• Zastosuj standardowe mechanizmy lokalizacji
• Stwórz w³asne us³ugi internacjonalizacji programów
Biblioteka strumieni (IOStreams) oraz biblioteka lokalizacji to jedne z najwa¿niejszych
komponentów jêzyka C++, wykorzystywane przy dostowywaniu aplikacji do wymogów
jêzykowych krajów, w których s¹ wydawane i wykorzystywane. Biblioteki te stosuje siê
do sterowania formatowaniem tekstów, definiowania w³asnych mechanizmów
formatuj¹cych oraz tworzenia wersji jêzykowych oprogramowania. Jednak¿e pomimo
wielkiej wagi tych bibliotek, powiêcona im dokumentacja jest wyj¹tkowo sk¹pa —
trudno znaleæ kompletne omówienie znajduj¹cych siê w nich klas oraz sposobów
ich wykorzystania we w³asnych aplikacjach.
Ksi¹¿ka „C++. Biblioteka IOStreams i lokalizacja programów” wype³nia tê lukê.
Zawiera ona opis oraz dokumentacjê programistyczn¹ klas biblioteki IOStreams
i lokalizacji, a tak¿e prezentuje sposoby ich wykorzystywania i zaawansowane metody
rozszerzania i dostosowywania do w³asnych potrzeb. Przedstawia zagadnienia zwi¹zane
z tworzeniem wersji jêzykowych aplikacji i dostosowywania ich do lokalnych konwencji
jêzykowo-kulturowych.
• Formatowanie wejcia i wyjcia
• Operacje na strumieniach plikowych
• Synchronizowanie strumieni
• Architektura biblioteki IOStreams
• Internacjonalizacja i lokalizacja programów
• Szkielet lokalizacji
• Definiowanie w³asnych aspektów lokalizacji
Jeli planujesz implementacjê w³asnych mechanizmów lokalizacji programów,
ta ksi¹¿ka bêdzie dla Ciebie doskona³ym ród³em informacji.
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
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
400219295.003.png 400219295.004.png 400219295.005.png 400219295.006.png
Spis treści
Słowo wstępne .......................................................................................................11
Wstęp .....................................................................................................................13
Wskazówki dla Czytelników .................................................................................17
Część I Strumieniowe wejście-wyjście
23
1.
Podstawy biblioteki IOStreams..............................................................................25
1.1. Wejście i wyjście.....................................................................................................................................25
1.2. Formatowanie wejścia i wyjścia..............................................................................................................33
1.2.1. Strumienie globalne biblioteki IOStreams ....................................................................................33
1.2.2. Operatory wejścia i wyjścia ..........................................................................................................34
1.2.3. Parametry formatowania strumienia .............................................................................................37
1.2.4. Manipulatory ................................................................................................................................43
1.2.5. Lokalizacja strumienia ..................................................................................................................47
1.2.6. Formatowanie wejścia i wyjścia — porównanie...........................................................................48
1.2.7. Jeszcze o formatowaniu wejścia ...................................................................................................49
1.3. Stan strumienia........................................................................................................................................51
1.3.1. Znaczniki stanu strumienia ...........................................................................................................52
1.3.2. Kontrola stanu strumienia .............................................................................................................54
1.3.3. Przechwytywanie wyjątków strumieni .........................................................................................56
1.3.4. Zerowanie stanu strumienia ..........................................................................................................58
1.4. Operacje wejścia-wyjścia na strumieniach plikowych ............................................................................59
1.4.1. Tworzenie, otwieranie, zamykanie i usuwanie strumieni plikowych............................................60
1.4.2. Tryby otwierania strumieni plikowych .........................................................................................61
1.4.3. Dwukierunkowe strumienie plikowe ............................................................................................65
1.5. Operacje wejścia-wyjścia na strumieniach w pamięci ............................................................................67
1.6. Wejście i wyjście bez formatowania .......................................................................................................69
400219295.001.png
4
SPIS TREŚCI
1.7. Pozycjonowanie w strumieniu.................................................................................................................71
1.8. Synchronizacja strumieni ........................................................................................................................73
1.8.1. Środki synchronizacji ...................................................................................................................74
1.8.1.1. Synchronizacja wywołaniami flush() i sync()..................................................................74
1.8.1.2. Synchronizacja za pośrednictwem znacznika formatu unitbuf ........................................75
1.8.1.3. Synchronizacja przez wiązanie strumieni ........................................................................75
1.8.2. Synchronizacja predefiniowanych strumieni standardowych .......................................................76
1.8.2.1. Synchronizacja pomiędzy predefiniowanymi strumieniami standardowymi ...................77
1.8.2.2. Synchronizacja predefiniowanego strumienia z jego analogiem w postaci
standardowego pliku wejścia-wyjścia języka C ..............................................................77
1.8.2.3. Synchronizacja predefiniowanego strumienia standardowego
ze skojarzonym z nim urządzeniem zewnętrznym ..........................................................78
1.8.2.4. Synchronizacja pomiędzy strumieniami znaków zwykłych i poszerzonych ....................78
2.
Architektura biblioteki IOStreams .........................................................................79
2.1. Klasy strumieni .......................................................................................................................................80
2.1.1. Hierarchia klas ..............................................................................................................................81
2.1.1.1. Bazowe klasy strumieni ...................................................................................................81
2.1.1.2. Ogólne klasy strumieni ....................................................................................................84
2.1.1.3. Konkretne klasy strumieni ...............................................................................................85
2.1.2. Zarządzanie buforem strumienia...................................................................................................86
2.1.3. Kopiowanie i przypisania obiektów strumieni..............................................................................89
2.1.4. Zarządzanie lokalizacjami strumieni.............................................................................................92
2.1.5. Współpraca obiektów strumieni, buforów strumieni i lokalizacji.................................................96
2.2. Klasy buforów strumieni .......................................................................................................................100
2.2.1. Hierarchia klas ............................................................................................................................101
2.2.2. Abstrakcja bufora strumienia ......................................................................................................102
2.2.3. Bufory strumieni ciągów znaków ...............................................................................................107
2.2.4. Bufory strumieni plikowych .......................................................................................................113
2.3. Typy i cechy znakowe...........................................................................................................................122
2.3.1. Reprezentacje znaków ................................................................................................................122
2.3.2. Cechy znakowe...........................................................................................................................127
2.3.2.1. Wymagania odnośnie typu cechy znakowej ..................................................................127
2.3.2.2 Predefiniowane standardowe typy cech znakowych .......................................................131
2.3.3. Typy znakowe.............................................................................................................................132
2.3.3.1. Wymagania dla typów znakowych ................................................................................132
2.4. Iteratory strumieni i buforów strumieni.................................................................................................135
2.4.1. Koncepcja iteratorów w bibliotece standardowej .......................................................................136
2.4.2. Iteratory strumieni ......................................................................................................................138
2.4.2.1. Iterator strumienia wyjściowego ....................................................................................139
2.4.2.2. Iterator strumienia wejściowego ....................................................................................140
2.4.2.3. Iteratory strumieni a jednoprzebiegowość .....................................................................144
2.4.3. Iteratory buforów strumieni ........................................................................................................146
2.4.3.1. Iterator bufora strumienia wyjściowego.........................................................................146
2.4.3.2. Iterator bufora strumienia wejściowego .........................................................................147
2.5. Dodatkowa pamięć obiektu strumienia i wywołania zwrotne ...............................................................150
2.5.1. Dodatkowa pamięć obiektu strumienia.......................................................................................151
2.5.2. Wywołania zwrotne strumieni ....................................................................................................153
SPIS TREŚCI
5
3.
Zaawansowane zastosowania biblioteki IOStreams ............................................155
3.1. Wejście i wyjście dla typów definiowanych przez użytkownika ..........................................................155
3.1.1. Sygnatury inserterów i ekstraktorów ..........................................................................................156
3.1.2. Pierwsze własne insertery i ekstraktory ......................................................................................156
3.1.3. Udoskonalenia ............................................................................................................................159
3.1.3.1. Sterowanie formatowaniem ...........................................................................................160
3.1.3.2. Operacje wstępne i likwidacyjne ...................................................................................161
3.1.3.3. Sygnalizowanie błędów .................................................................................................162
3.1.3.4. Umiędzynarodowienie ...................................................................................................163
3.1.3.5. Operacje wejścia-wyjścia...............................................................................................165
3.1.4. Udoskonalone wersje insertera i ekstraktora daty .......................................................................165
3.1.4.1. Umiędzynarodawianie daty............................................................................................165
3.1.4.2. Czynności wstępne i likwidacyjne .................................................................................167
3.1.4.3. Sterowanie formatowaniem ...........................................................................................168
3.1.4.4. Sygnalizacja błędów ...................................................................................................... 169
3.1.4.5. Zastosowanie udoskonalonego insertera i ekstraktora ...................................................176
3.1.5. Ogólne wersje insertera i ekstraktora..........................................................................................177
3.1.6. Wersja prosta a udoskonalona ....................................................................................................182
3.2. Manipulatory definiowane przez użytkownika .....................................................................................184
3.2.1. Manipulatory bezparametrowe ...................................................................................................185
3.2.2. Manipulatory sparametryzowane ................................................................................................187
3.2.2.1. Proste implementacje manipulatorów z parametrami ....................................................187
3.2.2.2. Wersja uogólniona — szablon klasy bazowej manipulatora..........................................188
3.2.2.3. Warianty implementacji manipulatora ...........................................................................192
3.2.2.4. Udoskonalenia ...............................................................................................................194
3.2.2.5. Typ bazowy manipulatorów standardowych — smanip ................................................198
3.3. Rozszerzanie funkcji strumienia............................................................................................................199
3.3.1. Własne zastosowania dodatkowej pamięci strumienia — iword, pword i xalloc........................199
3.3.1.1. Inicjalizacja i utrzymywanie indeksu pary iword-pword ...............................................202
3.3.1.2. Implementacja insertera dat ........................................................................................... 202
3.3.1.3. Implementacja manipulatora..........................................................................................204
3.3.1.4. Zarządzanie pamięcią za pośrednictwem wywołań zwrotnych strumieni ......................206
3.3.1.5. Sygnalizowanie błędów funkcji wywołań zwrotnych ....................................................211
3.3.1.6. Stosowanie nowych funkcji ...........................................................................................213
3.3.1.7. Ocena metody wykorzystującej pola iword-pword ........................................................213
3.3.2. Wyprowadzanie nowych klas strumieni ..................................................................................... 215
3.3.2.1. Wyprowadzanie nowej klasy strumienia........................................................................216
3.3.2.2. Implementacja insertera i manipulatora .........................................................................223
3.3.2.3. Podsumowanie ...............................................................................................................226
3.3.3. Porównanie techniki iword-pword i rozbudowy hierarchii klas..................................................227
3.4. Rozszerzanie funkcji bufora strumienia ................................................................................................229
3.4.1. Wyprowadzanie z klasy bazowej bufora strumienia ...................................................................230
3.4.1.1. Rdzenne funkcje buforów strumieni — transport znaków .............................................230
3.4.1.2. Opcjonalne funkcje buforów strumieni..........................................................................246
3.4.1.3. Udostępnianie nowych klas strumieni z nowymi klasami buforów strumieni ...............248
3.4.2. Wyprowadzanie pochodnych konkretnych klas buforów strumieni ...........................................248
6
SPIS TREŚCI
Część II Internacjonalizacja
251
4.
Wprowadzenie do internacjonalizacji i lokalizacji ..............................................253
4.1. Internacjonalizacja a lokalizacja ...........................................................................................................253
4.2. Konwencje kulturowe ...........................................................................................................................254
4.2.1. Język ...........................................................................................................................................255
4.2.2. Wartości liczbowe ......................................................................................................................255
4.2.3. Wartości pieniężne...................................................................................................................... 255
4.2.4. Godziny i daty ............................................................................................................................256
4.2.5. Porządek alfabetyczny ................................................................................................................257
4.2.6. Komunikaty ................................................................................................................................258
4.2.7. Kodowanie znaków ....................................................................................................................258
4.2.7.1. Pojęcia i definicje...........................................................................................................258
4.2.7.2. Zestawy znaków ............................................................................................................259
4.2.7.3. Metody kodowania znaków ...........................................................................................260
4.2.7.4. Zastosowania metod kodowania wielobajtowego i znaków poszerzonych ....................263
4.2.7.5. Konwersje kodowania....................................................................................................264
5.
Lokalizacja...........................................................................................................267
5.1. Tworzenie obiektów lokalizacji ............................................................................................................269
5.1.1. Nazwane obiekty lokalizacji .......................................................................................................269
5.1.2. Lokalizacje kombinowane ..........................................................................................................270
5.1.3. Lokalizacja globalna ...................................................................................................................272
5.2. Pobieranie aspektów z lokalizacji .........................................................................................................273
5.2.1. Funkcja has_facet .......................................................................................................................273
5.2.2. Funkcja use_facet .......................................................................................................................274
6.
Aspekty standardowe ...........................................................................................277
6.1. Aspekty językowe i alfabetyczne .......................................................................................................... 278
6.1.1. Klasyfikacja znaków...................................................................................................................278
6.1.1.1. Klasyfikacja znaków......................................................................................................278
6.1.1.2. Konwersja znaków liter małych i wielkich ....................................................................279
6.1.1.3. Konwersja znaków pomiędzy typami charT i char ........................................................280
6.1.1.4. Właściwości specjalne aspektu ctype<char> .................................................................281
6.1.2. Porządkowanie ciągów ............................................................................................................... 281
6.1.3. Konwersja kodowania.................................................................................................................283
6.1.4. Katalogi komunikatów................................................................................................................287
6.2. Aspekty formatowania i analizy leksykalnej.........................................................................................287
6.2.1. Wartości liczbowe i logiczne ...................................................................................................... 288
6.2.1.1. Aspekt numpunct ...........................................................................................................288
6.2.1.2. Aspekt num_put.............................................................................................................289
6.2.1.3. Aspekt num_get .............................................................................................................290
400219295.002.png
Zgłoś jeśli naruszono regulamin