Home > Store > Programming > C/C++

Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference

Register your product to gain access to bonus material or receive a coupon.

Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference

Book

  • Your Price: $51.99
  • List Price: $64.99
  • Usually ships in 24 hours.

Description

  • Copyright 2000
  • Pages: 672
  • Edition: 1st
  • Book
  • ISBN-10: 0-321-58558-5
  • ISBN-13: 978-0-321-58558-5

Standard C++ provides a foundation for creating new, improved, and more powerful C++ components. IOStreams and locales are two such major components for text internationalization. As critical as these two APIs are, however, there are few resources devoted to explaining them.

Standard C++ IOStreams and Locales fills this informational gap. It provides a comprehensive description of, and reference to, the iostreams and locales classes, showing how to put them to use and offering advanced 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.

This book serves as both a guide and a reference to C++ components. Part I explains iostreams, what they are, how they are used, their underlying architectural concepts, and the techniques for extending the iostream framework. Part II introduces internationalization and shows you how to adapt your program to local conventions. Readers seeking an initial overview of the problem domain will find an explanation of what internationalization and localization are, how they are related, and how they differ. With examples, the authors show the differences among cultural conventions, how C++ locales can be used to address such differences, and how locale framework can be extended to handle further, nonstandard cultural conventions.

Standard C++ IOStreams and Locales:
  • Explains formatting and error indication features of iostreams

Sample Content

Table of Contents

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<char>.

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<string>.

char_traits<charT>.

char_traits<char>.

char_traits<wchar_t>. 3. IOStreams.

header file<iosfwd>.

global type definitions.

global objects.

basic_filebuf<charT,traits>.

basic_fstream<charT,traits>.

basic_ifstream<charT,traits>.

basic_ios<charT,traits>.

basic_iostream<charT,traits>.

basic_istream<charTtraits>.

basic_istringstream<charT,traits,Allocator>.

basic_ofstream<charT,traits>.

basic_ostream<charT,traits>.

basic_ostringstream<charT,traits,Allocator>.

basic_streambuf<charT,traits>.

basic_stringbuf<charT,traits,Allocator>.

basic_stringstream<charT,traits,Allocator>.

fpos<stateT>.

ios_base.

manipulators. 4. Stream Iterators.

header file<iterator>.

istreambuf_iterator<charT,traits>.

istream_iterator<T,charT,traits,Distance>.

iterator<Category,T,Distance,Pointer,Reference>.

iterator category tags.

ostreambuf_iterator<charT,traits>.

ostream_iterator<T,charT,traits,Distance>. 5. Other I/O Operations.

bitset .

complex.

basic_string<charT,traits,Allocator>. 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.

Updates

Submit Errata

More Information

Unlimited one-month access with your purchase
Free Safari Membership