Click on the banner to return to the user guide home page.
Table of Contents
Chapter 1: Internationalization
1.1 How to Read this Section
1.2 Internationalization and Localization
1.2.1 Localizing Cultural Conventions
1.2.2 Character Encodings for Localizing Alphabets
1.2.3 Summary
1.3 The Standard C Locale and the Standard C++ Locales
1.3.1 The C Locale
1.3.2 The C++ Locales
1.3.3 Facets
1.3.4 Differences between the C Locale and the C++ Locales
1.3.5 Relationship between the C Locale and the C++ Locale
1.4 The Locale
1.5 The Facets
1.5.1 Creating a Facet Object
1.5.2 Accessing a Locale's Facets
1.5.3 Using a Stream's Facet
1.5.4 Creating a Facet Class for Replacement in a Locale
1.5.5 The Facet Id
1.5.6 Creating a Facet Class for Addition to a Locale
1.6 User-Defined Facets: An Example
1.6.1 A Phone Number Class
1.6.2 A Phone Number Formatting Facet Class
1.6.3 An Inserter for Phone Numbers
1.6.4 The Phone Number Facet Class Revisited
1.6.5 An Example of a Concrete Facet Class
1.6.6 Using Phone Number Facets
1.6.7 Formatting Phone Numbers
1.6.8 Improving the Inserter Function
Chapter 2: Stream Input/Output
2.1 How to Read This Section
2.1.1 Code Examples
2.1.2 Terminology
2.2 The Architecture of Iostreams
2.2.1 What Are the Standard Iostreams?
2.2.2 How Do the Standard Iostreams Work?
2.2.3 How Do the Standard Iostreams Help Solve Problems?
2.2.4 The Internal Structure of the Iostreams Layers
2.3 Formatted Input/Output
2.3.1 The Predefined Streams
2.3.2 Input and Output Operators
2.3.3 Format Control Using the Stream's Format State
2.3.4 Localization Using the Stream's Locale
2.3.5 Formatted Input
2.4 Error State of Streams
2.4.1 Checking the Stream State
2.4.2 Catching Exceptions
2.5 File Input/Output
2.5.1 The Difference between Predefined File Streams (cin, cout, cerr, and clog) and File Streams
2.5.2 Code Conversion in Wide Character Streams
2.5.3 File Streams
2.5.4 The Open Mode
2.5.5 Binary and Text Mode
2.6 In-Memory Input/Output
2.6.1 The Internal Buffer
2.6.2 The Open Modes
2.7 Input/Output of User-Defined Types
2.7.1 An Example Using a User-Defined Type
2.7.2 A Simple Extractor and Inserter for the Example
2.7.3 Improved Extractors and Inserters
2.7.4 More Improved Extractors and Inserters
2.7.5 Patterns for Extractors and Inserters of User-Defined Types
2.8 Manipulators
2.8.1 Manipulators without Parameters
2.8.2 Manipulators with Parameters
2.9 Streams and Stream Buffers
2.9.1 Copying and Assigning Stream Objects
2.9.2 Sharing a Stream Buffer Among Streams
2.9.3 Copies of the Stream Buffer
2.10 Synchronizing Streams
2.10.1 Explicit Synchronization
2.10.2 Implicit Synchronization Using the unitbuf Format Flag
2.10.3 Implicit Synchronization by Tying Streams
2.10.4 Synchronizing the Predefined Standard Streams
2.10.5 Synchronization with the C Standard I/O
2.11 Stream Storage for Private Use: iword, pword, and xalloc
2.11.1 An Example: Storing a Date Format String
2.11.2 Another Look at the Date Format String
2.11.3 Caveat
2.12 Creating New Stream Classes by Derivation
2.12.1 Choosing a Base Class
2.12.2 Construction and Initialization
2.12.3 The Example
2.12.4 Using iword/pword for RTTI in Derived Streams
2.13 Defining A Code Conversion Facet
2.13.1 Categories of Code Conversions
2.13.2 Example 1 -- Defining a Tiny Character Code Conversion (ASCII and EBCDIC)
2.13.3 Error Indication in Code Conversion Facets
2.13.4 Example 2 -- Defining a Multibyte Character Code Conversion (JIS and Unicode)
2.14 Differences between Standard and Traditional Iostreams
2.14.1 The Character Type
2.14.2 Internationalization
2.14.3 File Streams
2.14.4 String Streams
2.14.5 Streams with Assign
2.15 Differences between Standard and Rogue Wave IOStreams
2.15.1 Extensions
2.15.2 Restrictions
2.15.3 Deprecated Features
Appendix A: Implementation Dependencies and Open Issues in the Standard
©Copyright 1996, Rogue Wave Software, Inc.