{logo}

July 2001
Volume 19 Number 7

SOFTWARE TOOLS

A Toolbox of String Classes

John Panzer
“One size fits all” has never applied to strings. Now you can have as many different kinds of strings as you need, all wrapped in the std::string interface.

An STL Error Message Decryptor for Visual C++

Leor Zolman
Believe it or not, there’s helpful information buried in those template error messages. It just takes a little Perl to dig it out.

A Random Access Compressed File Layer

Kyle York
Providing efficient random access to compressed data is a tall order. Here is a library that does just that, and it’s patterned after POSIX file I/O.

FEATURES

The C# Delegate

Stanley B. Lippman
If you’re comparing C# to other “C-family” languages, here’s an unusual feature that has no real equivalent in C++ or Java.

C/C++ TIPS

Tip #7: A remove_if for vector<T *>

Harald Nowak
Containers of pointers are common, but cumbersome to deal with. Here’s a little-used algorithm in the Standard C++ library that makes things a little less awkward.

C/C++ CONTRIBUTING EDITORS

The Standard Librarian: File-Based Containers

Matt Austern
Looking for a way to create a file-based container? You might need to look outside the Standard C++ library, and memory mapping may be the answer.

Sutter’s Mill: Why Not Specialize Function Templates?

Herb Sutter
Specializing function templates is not intuitive. Herb tells you when and why not to specialize templates.

DEPARTMENTS

Editor’s Forum

New Products

We Have Mail

C++ Experts on the Web

In this new, web-only component of CUJ, we continue publication of the columns that were popular in the former C++ Report magazine. The following articles are featured on the CUJ website this month:

“Object Interconnections: CORBA and XML, Part 2 — XML as CORBA Data”

by Douglas C. Schmidt and Steve Vinoski
XML's ability to provide structured, yet flexible, description and definition of data meshs well with CORBA's. This month, the authors continue their exploration of the relationship between CORBA and XML.

“Conversations: How to Persist and Object”

by Jim Hyslop and Herb Sutter
In this article, our narrator learns that object persistence can be easily implemented, especially when it’s hooked up to the factory method template.

“The (B)Leading Edge: Using IOStreams — Creating a Whole New Stream Class”

by Jack W. Reeves
This month, Jack provides a C++ mechanism to encode/decode data using the eXternal Data Representation protocol.