Average Customer Review:     
| The best, and only, comprehensive IOStreams book |      | When people think of C++ standard libraries, they think of the STL. There are dozens of books on the STL, and everyone is taking advantages of its features to get good algorithms that don't reinvent the wheel.As this book points out, IOStreams is perhaps the most-overlooked part of standard C++. It has just as many features as the STL, and can help you write less, better code if you take advantage of it. If you have ever spent a few days writing a buffer class, you didn't have to; The IOStreams streambuf is comletely extensible and customizable. Even better, IOStreams is a complex, high-performance library written by a C++ expert from Bell Labs. Most of us C++ programmers don't think about how IOStreams works, other than to write '<<' a few times. OO design doesn't get any better than that. This book is also an excellent case study on the IOStreams library, touching on the proper use of multiple inheritence, and the benefits of static type checking. If a library can be this efficient and extensible, while being as easy to use as typing '<<', there is something every C++ programmer can learn from its design. The book is even endorsed by Jerry Schwarz, the man who invented IOStreams, and has a forward written by him. If you own two STL books, but not this book, I think you've made a mistake. This should be the third C++ book you buy, after a language reference and STL reference. It is that useful and interesting.
The reason why I bought this book was the wish to learn more about the C++ Standard. When I held the book in my hand the first time I was not shure if it would be worth the time reading it. It seemed only be useful for a DOS - like software, not for my GUI problems. So I was very surprised in a good sense to read about ideas how to use IOStreams for GUI - internationalization (I18N), described on pages 175 and 225. The IOStreams library, as it is described by the authors, is a better answer to my I18N - problems than all other three GUI - libraries I know. It offers more flexibility. An other treasure was the techniqe of two-phase polymorphic dispatch described in this excellent book. This technique allows me a much more flexible design than in the past. If the customer asked for new features I often had to change my class hierarchy (and all classes in it) by adding new virtual functions. It is cumbersome if it is code of a library. The two-phase polymorphic dispatch shows an alternative. The third (but not the last) treasure are the appendices. They are a good reference for C++ refinements. The thought I perhaps would not have read this book worries me, I had missed a chance. Many thanks to the authors writing such an excellent book.
| Required Ownership for C++ programmers |      | This book is it. There is no other text which covers the full I/O Streams library as of the ISO C++99 standard. B. Stroustrup's book "The C++ Programming language" has one chapter of 50+ pages on streams. Its enough to get you started, but not enough if you want to make roll your own. Your other choice is to comb back issues of C++ Report and C/C++ User's Journal for the relevent information. (And know enough to ignore the articles that do it wrong. Ok maybe wrong is too strong a word, but now that you have the option to understand how the streams library is built you can use it the way it was intended.)There is now no reason ANY programmer should create a new ostream class by inheriting from basic_ostream<>. The I/O streams library was designed to be extended by programmers. Read this book and learn how to do it so that you don't have to re-write every sub member as a forward to the actual class. As for Locales, there is a chapter in the latest version of B.S's book as an Appendix. Or about 1/4th of this book is devoted to how that mechanism works. Buy it. You need it. Without it you are programming by guess and by golly.
|