Standard C++ IOStreams and Locales - Angelika Langer, Klaus Kreft

Standard C++ IOStreams and Locales

Advanced Programmer's Guide and Reference
Buch | Hardcover
672 Seiten
2000
Addison Wesley (Verlag)
978-0-201-18395-5 (ISBN)
49,95 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
Provides a description of the iostreams and locales classes, showing how to put them to use and offering information on customizing and extending their basic operation. Written by two experts involved with the development of the standard, this book reveals the rationale behind the design of the APIs and points out their potential pitfalls.
IOStreams and Locales are two of the most important, eagerly-awaited components of the ISO/ANSI C++ standard -- and this is the first book to cover them exclusively, and in great depth. The authors explain the problems that IOStreams and Locales solve; then present a wide range of examples and techniques, from simple to sophisticated. The authors introduce concepts, component architecture, standards-compliant code, and practical patterns of use. Coverage includes: key differences between standard IOStreams and the non-standard versions that preceded it; how to extend the Locales component for more effective internationalization; and more. The book also includes a complete, authoritative class reference. Experienced developers can use the book as a start-to-finish learning tool, or as a handy "just-in-time" reference for specific techniques.

Angelika Langer works as a freelance instructor and courseware developer. Previously, she was a senior trainer and developer at Rogue Wave Software, Inc. She also worked for a compiler group at Siemens, where she was responsible for the C++ compiler's standard library. She is a frequent speaker at international object-oriented conferences and was a member of the ISO/ANSI C++ standards committee. Klaus Kreft is a Senior Consultant at Siemens Business Services. He was previously a senior consultant at Rogue Wave Software, Inc., and system architect at Siemens. Together with Angelika Langer he writes a regular column on the Standard C++ Library for C++ Report. 0201183951AB04062001

Preface.


Foreword.


Guide to Readers.
PART I. STREAM INPUT AND OUTPUT.

1. IOStreams Basics.


Input and Output.



Formatted Input/Output.



The Predefined Global Streams.



The Input and Output Operators.



The Format Parameters of a Stream.



Manipulators.



The Locale of a Stream.



Comparison Between Formatted Input and Output.



Peculiarities of Formatted Input.



The Stream State.



The Stream State Flags.



Checking the Stream State.



Catching Stream Exceptions.



Resetting the Stream State.



File Input/Output.



Creating, Opening, Closing and Destroying File Streams.



The Open Modes.



Bidirectional File Streams.



In-Memory Input/Output.



Unformatted Input/Output.



Stream Positioning.



Synchronization of Streams.



Means of Synchronization.



Synchronization via flush() and sync().



Synchronization using the unitbuf Format Flag.



Synchronization by Tying Streams.



Synchronizing the Predefined Standard Streams.



Synchronization Among the Predefined Standard Streams.



Synchronization with the C Standard I/O.



Synchronization with the External Device.



Synchronization Between Predefined Standard for Narrow and Wide Characters.

2. The Architecture of IOStreams.


The Stream Class.



Class Heirarchy.



The Stream Base Classes.



The General Stream Classes.



The Concrete Stream Classes.



How Streams Maintain their Stream Buffer.



Copying and Assignment of Streams.



How Streams Maintain Their Locale.



Collaboration Among Streams, Stream Buffers, and Locales.



The Stream Buffer Classes.



Class Heirarchy.



The Stream Buffer Abstraction.



String Stream Buffers.



File Stream Buffers.



Character Types and Character Traits.



Character Representations.



Character Traits.



Requirements of a Character Traits Type.



The End-of-File Character.



Copying, Finding, and Comparing Characters.



Conversion State.



Stream Positions.



The Predefined Standard Character Traits.



Character Types.



Requirements for Character Types.



Stream Iterators and Stream Buffer Iterators.



The Concepts of Iterators in the Standard Library.



Stream Iterators.



Output Stream Iterator.



Input Stream Iterator.



Stream Iterators are One-Pass Iterators.



Stream Buffer Iterators.



Output Stream Buffer Iterator.



Input Stream Buffer Iterator.



Additional Stream Storage and Stream Callbacks.



Additional Stream Storage.



Stream Callbacks.

3. Advanced IOStreams Usage.


Input and Output of User-Defined Types.



The Signature of Inserters and Extractors.



First Inserters and Extractors.



Refinements.



Format Control.



Prefix and Suffix Operations.



Error Indication.



Internationalization.



I/O Operations.



Refined Inserters and Extractors.



Internationalization.



Prefix and Suffix Operations.



Format Control.



Error Indication.



Using the Refined Inserter and Extractor.



Generic Inserters and Extractors.



Simple Versus Refined Approach.



User-Defined Manipulators.



Manipulators Without Parameters.



Manipulators with Parameters.



Straightforward Manipulator Implementations.



Generalized Technique: Using a Manipulator Base Template.



Variants of a Manipulator Implementation.



Refinements.



Manipulator Base Template with Error Handling.



Manipulators with State.



The Standard Manipulator Base Type smanip.



Extending Stream Functionality.



Using Stream Storage for Private Use: iword, pword, and xalloc.



Initializing and Maintaining the iword/pword Index.



Implementing the Date Inserter.



Implementing the Maniuplator.



Using Stream Callbacks for Memory Management.



Error Indication of Stream Callback Functions.



Extending the Example.



Using the New Functionality.



Evaluation of the iword/pword Approach.



Creating New Stream Classes by Derivation.



Deriving the New Stream Classes by Derivation.



Implementing the Date Inserter and the Manipulator.



Implementing the Date Inserter.



Implementing the Manipulator.



Using the New Functionality.



Summary.



Comparing Both Solutions—iword/pword Versus Derivation.



Adding Stream Buffer Functionality.



Deriving from the Stream Buffer Base Class.



Core Functionality of Stream Buffers Character Transportation.



Stream Buffer for Unbuffered Character Transport.



Stream Buffer for Buffered Character Transport.



Optional Functionality of Stream Buffers.



Providing New Stream Classes Along with New Stream Buffer Classes.



Deriving from Concrete Stream Buffer Classes.

II. INTERNATIONALIZATION.

4. Introduction to Internationalization and Localization.


Internationalization and Localization.



Cultural Conventions.



Language.



Numerical Values.



Monetary Values.



Time and Date.



Sorting Words.



Messages.



Character Encodings.



Terms and Definitions.



Character Codesets.



Character Encoding Schemes.



Japanese Multibyte Encoding Schemes.



Uses of Multibyte Encodings and Wide Characters.



Code Conversions.

5. Locales.


Creating Locale Objects.



Named Locales.



Combined Locales.



The Global Locale.



Retrieving Facets from a Locale.



has_facet.



use_facet.

6. Standard Facets.


Alphabet- and Language-Related Facets.



Character Classification.



Character Classification.



Character Conversion to Upper- and Lowercase.



Character Conversion Between charT and char.



Special Properties of ctype.



String Collation.



Code Conversion.



Message Catalogs.



Formatting and Parsing Facets.



Numerical and Boolean Values.



The numpunct Facet.



The num_put Facet.



The num_get Facet.



Monetary Values.



The moneypunct Facet.



The money_put Facet.



The money_get Facet.



Date and Time Values.



The time_put Facet.



The time_get Facet.



Grouping of Standard Facets in a Locale.



The Standard Facet Families.



The Standard Facet Base Class Templates.



The Derived by name Facets.



Behavior of the Base Class Facets.



Mandatory Facet Types.



Locale Categories.



Diagram: Facets and Categories.



Advanced Usage of the Standard Facets.



Indirect Use of a Facet Through a Stream.



Use of a Facet Through a Locale.



Direct Use of the Facet Independent of a Locale.

7. The Archtecture of the Locale Framework.


Class Hierarchy.



Identification and Lookup of Facets in a Locale.



Facet Identification.



Facet Lookup.



Retrieval of Facets from a Locale.



Storing Facets in a Locale.



The Rationale Behind the Use of the Two-Phase Polymorphism.



Memory Management of Facets in Locale.



The Facet Reference Counter.



Immutability of Facets in a Locale.

8. User-Defined Facets.


Adding a User-Defined Facet to an Existing Facet Family.



Defining a New Facet Family.

Reference Guide.
Introduction.
1. Locale.


header file.



global functions.



codecvt.



codecvt_base.



codecvt_byname.



collate.



collate_byname.



ctype.



ctype.



cytpe_base.



ctype_byname.



locale.



messages.



messages_base.



messages_byname.



money_base.



money_get.



moneypunct.



moneypunct_byname.



money_put.



num_get.



numpunct.



numpunct_byname.



num_put.



time_base.



time_get.



time_get_byname.



time_put.



time_put_byname.



time_base.



tm.

2. Character Traits.


header file.



char_traits.



char_traits.



char_traits.

3. IOStreams.


header file.



global type definitions.



global objects.



basic_filebuf.



basic_fstream.



basic_ifstream.



basic_ios.



basic_iostream.



basic_istream.



basic_istringstream.



basic_ofstream.



basic_ostream.



basic_ostringstream.



basic_streambuf.



basic_stringbuf.



basic_stringstream.



fpos.



ios_base.



manipulators.

4. Stream Iterators.


header file.



istreambuf_iterator.



istream_iterator.



iterator.



iterator category tags.



ostreambuf_iterator.



ostream_iterator.

5. Other I/O Operations.


bitset .



complex.



basic_string.

Appendix A: Parsing and Extraction of Numerical and bool Values.


A.1 Parsing Numerical Values.



A.2 Parsing bool Values.



A.3 Conversion Specifier and Length Modifier.

Appendix B: Formatting of Numerical and bool Values.


B.1 Formatting Numerical Values.



B.2 Formatting bool Values.



B.3 Conversion Specifiers, Qualifiers, and Length Modifiers.

Appendix C: strftime() Conversion Specifiers.
Appendix D: Correspondences Between C and C++IOStreams.


D.1 File Open Modes.



D.2 Stream Positions.

Appendix E: Differences Between Classic and Standard IOStreams.


E.1 Templatizing the IOStreams Classes.



E.2 Splitting Base Class ios.



E.3 Indicating Errors.



E.4 Internationalizing IOStreams.



E.5 Removing_withassign Classes.



E.6 Removing File Descriptors.



E.7 String Streams: Replacing strstream by stringstream.



E.8 Changes to the Stream Buffer Classes.



E.9 Minor changes.

Appendix F: Relationship Between C and C++ Locales.


F.1 Locale Categories in C and C++.



F.2 The Global Locale in C and C++.

Appendix G: New C++ Features and Idoms.


G.1 Bitmask Types.



G.2 POD--Plain Old Data.



G.3 Explicit Constructors.



G.4 Template Specialization.



G.5 Default Template Arguments.



G.6 Explicit Template Argument Specification.



G.7 The Typename Keyword.



G.8 Dynamic Cast.



G.9 Function try Blocks.



G.10 Standard Exceptions.



G.11 Numeric Limits.



G.12 C++ Strings.

Bibliography.
Index. 0201183951T04062001

Erscheint lt. Verlag 24.2.2000
Verlagsort Boston
Sprache englisch
Maße 243 x 191 mm
Gewicht 1166 g
Themenwelt Informatik Programmiersprachen / -werkzeuge C / C++
ISBN-10 0-201-18395-1 / 0201183951
ISBN-13 978-0-201-18395-5 / 9780201183955
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Das umfassende Handbuch

von Torsten T. Will

Buch | Hardcover (2024)
Rheinwerk (Verlag)
49,90
Technisch-wissenschaftliche Übungsaufgaben mit Lösungen

von Thomas Hoch; Gerd Küveler

Buch | Softcover (2023)
Springer Vieweg (Verlag)
37,99
das umfassende Handbuch

von Jürgen Wolf; René Krooß

Buch | Hardcover (2023)
Rheinwerk (Verlag)
49,90