Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA AFTER EIGHT
    MODULE SYSTEM
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
C++ IOStreams and Locales

C++ IOStreams and Locales
COURSE DESCRIPTION

Formatting and parsing of text is a problem that countless C++ programmers still solve by resorting to C functions like printf() and scanf() , despite of their indisputable drawbacks. A more reliable and less error prone tool for handling of text I/O is available in form of the C++ IOStreams library. 

The IOStreams classes define the standard interface for input and output of text to external devices such as file systems, networks, etc. In fact, IOStreams is the standard formatting and parsing tool for both pre-defined and user-defined types. 

Closely related to IOStreams are locales and facets, which form the standard C++ support for internationalization of programs.

Both IOStreams and locales can be seen a collection of ready-to-use components, but they are also frameworks that can be extended in interesting ways and for a variety of purposes. 

In this seminar you will learn how to use IOStreams and locales effectively. In addition, we will study the extension techniques used in IOStreams and locales and can learn useful programming idioms that can be applied to other areas of software development.
 

This is a course for serious C++ programmers who want to gain an in-depth understanding of the standard IOStreams and locales frameworks. 

If you want to stay ahead of your time and keep your knowledge above average you need to know everything about the latest progamming techniques in C++, then this is the right course for you.

The seminar is based on the book: 

"Standard C++ IOStreams and Locales"
Angelika Langer & Klaus Kreft
Addison-Wesley, January 2000
For more information on the book and the topics covered in this seminar go to the BOOK , where you find the table of contents, a number of reviews, the preface, and lots of other information about the book, the publisher, and the authors.

Prerequisite Courses and Skills: Introductory C++ course, or equivalent experience; in-depth experience with iostreams not required; 
basic knowledge of iostreams helpful 

One year of programming experience using C++

Duration: 5 days
Exercises: Workshops and hands-on labs

Attendants should feel comfortable with the basics of the language and be open for expanding their knowledge of the standard C++ library. 
 

PERFORMANCE OBJECTIVES
Understand text formatting and parsing in C++
Prepare C++ programs for the global market
Avoid re-invention of the wheel, know how to use standard tools instead
Know how to use and extend C++ IOStreams and locales framework
Add novel C++ programming techniques to your skill set

BUSINESS OBJECTIVES
Equip your software professional state-of-the-art C++ skills 
Make your software ready for the global market
Increase the flexibility of your C++ programs
Build on reliable standard components

The course is designed and conducted by Angelika Langer and backed by years of experience in teaching  C++ related topics and more than a decade of real-world experience in industrial software development. Angelika Langer is a freelance trainer/consultant in the area of object-oriented software development in C++ and Java. She is member of the ANSI C++ standards committee since 1993, columnist of C++ Report, a recognized speaker at OO conferences, and co-author of the book "Standard C++ IOStreams and Locales". 


 

COURSE OVERVIEW

This tutorial aims to explain techniques for implementing input and output operations as well as so-called manipulators for user-defined types. Along the way, we explore all the new stuff in the standard IOStreams library such as the exception mask, sentries, locales, callbacks, etc. We extend the IOStreams abstraction by adding new external devices and by adding new formatting and parsing abstractions. We compare derivation from the stream classes to use of the iword/pword fields of a stream. Along the way, we learn the basics of the internationalization support in C++ and how it can be extended and used in conjunction with IOStreams. 
A case study (formatting and parsing of monetary amounts in dual currency environments) runs as a thread through the hands-on labs. It is well suited to demonstrate the use of IOStreams on the one hand, but also use of locales for tackling the culture-dependencies introduced by monetary formats.
INTRODUCTION TO THE STANDARD LIBRARY 
  • Overview and Organization of the Library
  • Strings
  • Character Traits
  • (Lab) Case-Insensitive String Compare
USING IOSTREAMS 
  • Formatted Input/Output
  • The Stream State
  • File Input/Output
  • In-Memory Input/Output 
  • Unformatted Input/Output
  • (Lab) Skipping Comments
  • Simple User-Defined Input/Output
  • Stream Iterators
  • (Lab) Formatted I/O And Stream Iterators
  • Stream Positioning
  • Synchronization of Streams
USING LOCALES
  • Introduction to Internationalization
  • Creating and Accessing Locales
  • Language-Related Standard Facets
  • Standard Facets for Formatting and Parsing
  • Direct and Indirect Use of Facets
  • Facet Base Classes
  • (Lab) Modified Monetary Output (user-defined moneypunct)
EXTENDING IOSTREAMS 
  • The Stream Classes
  • (Lab) Copying Streams
  • User-Defined Inserters and Extractors
  • The Refined Date Inserter/Extractor
  • (Lab) User-Defined I/O for Monetary Amounts
  • User-Defined  Manipulators
  • Iword/Pword & Stream Callbacks
  • User-Defined Stream Extensions (Iword/Pword)
  • (Lab) Currency Symbol Manipulator (iword/pword)
  • User-Defined Stream Extensions (Derivation)
  • (Lab) Currency Symbol Manipulator (Derivation)
EXTENDING LOCALES
  • Facet Identification and Lookup
  • Memory Management of Facets
  • User-Defined Facet Families
  • (Lab) Facets for Dual Curreny Systems
STREAM BUFFERS
  • The Stream Buffer Classes
  • User-Defined Stream Buffer Classes
  • (Lab) A Wrap-Around Buffer
CHARACTERS
  • Characters Encodings
  • Code Conversion Facets
  • Character Traits and Character Types

 
FURTHER READING

To get an impression of some topics covered in this course check out the sample reading: 
 
 
New Features in Standard IOStreams
White Paper
The Stream Buffer Classes
Excerpt from the book
 
TRAINING LOCATIONS

Open Enrollment
Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
On-Site Training
Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
Schedule
To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
  © Copyright 1995-2003 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/IOStreamsInDepth.htm  last update: 22 Nov 2003