Introduction
This chapter contains recipes for working with strings and text files. Most C++ programs, regardless of their application, manipulate strings and text files to some degree. Despite the variety of applications, however, the requirements are often the same—for strings: trimming, padding, searching, splitting, and so on; for text files: wrapping, reformatting, reading delimited files, and more. The recipes that follow provide solutions to many of these common needs that do not have ready-made solutions in the C++ standard library.
The standard library is portable, standardized, and, in general, at least as efficient
as homemade solutions, so in the following examples I have preferred it over code from
scratch. It contains a rich framework for manipulating and managing strings and text, much
of which is in the form of the class templates basic_string (for strings), basic_istream,
and basic_ostream (for input and output text streams).
Almost all of the techniques in this chapter use or extend these class templates. In cases
where they didn’t have what I wanted, I turned to another area of the standard library that
is full of generic, prebuilt solutions: algorithms and containers.
Everybody uses strings, so chances are that if what you need isn’t in the standard library, someone has written it. The Boost String Algorithms library, written by Pavol Droba, fills many of the gaps in the standard library by implementing most of the algorithms that you’ve had to use at one time ...