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

Angelika Langer, Klaus Kreft

  • 出版商: Addison Wesley
  • 出版日期: 2000-02-10
  • 售價: $2,290
  • 貴賓價: 9.5$2,176
  • 語言: 英文
  • 頁數: 672
  • 裝訂: Hardcover
  • ISBN: 0201183951
  • ISBN-13: 9780201183955
  • 相關分類: C++ 程式語言Apple Developer
  • 無法訂購

買這商品的人也買了...

商品描述


Description

The first in-depth guide to Standard C++ IOStreams and internationalization -- by two world-renowned C++ experts.

  • Includes extensive examples and case studies -- from simple to complex.
  • Patterns of usage, practical tips and tricks, and internationalization techniques.
  • Contains complete class references for IOStreams and locale components.
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 writer and courseware developer. Formerly a senior trainer/developer at Rogue Wave Software, Inc., she led development of a C++ compiler standard library at Siemens Nixdorf, and has served on the ISO/ANSI Standards Committee since 1993.

Klaus Kreft is a software architect and senior consultant at Siemens Nixdorf Information Systems in Germany. He was previously a senior trainer/consultant at Rogue Wave Software, Inc., in Oregon. Together, the authors developed a course on the STL for Rogue Wave Software, and write a column on the Standard C++ Library for C++ Report.

Back to Top


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.

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


Back to Top