Jan 14, 2002

Reading assignment:
  Deitel and Deitel pp. 343-345, and sections 19.1 - 19.9
  -or Wang pp  37-39, 63-65 and 222-225

Character arrays and C-style string:
  - There's a special way to define and initialize character arrays:
    char str[] = "This is a string";
    These are called c-style strings and are null terminated, so 11 slots
    11 slots are reserved for this array;
  - There are special functions in the string handling library for
    dealing with c-style strings, such as strlen, or
    strcmp, etc.  See page 345 in Deitel and Deitel
  - There is another way to store strings - with the string class from the
    standard library.  This is a more robust system that I recommend
    you favor over C-style strings. 

Strings:
  - Use #include <string> to get the string class header file
  - Define a string with a variety of initializers
      string str1("This is a string");
      string str2 = "This is another string";
      string str3(8,'x');  /* string of 8 'x' characters */
      string str4("String part 1"
                   " and part2 are concatentated together");
    and *not* string no_good('x');
  - string objects may not be null-terminated
  - Individual characters can be accessed with str1[5], for example,
    indexed started at 0.  Alternately, you can use str1.at(5)
  - >> works with strings, as in cin >> str3;
  - Unlike arrays, you can assign strings, as in str1 = str2; or
    str1.assign(str2);
  - You can add strings, as in str3 = str1 + str2;
    str1 and str2 are concatenated and copied into str3
  - You can append onto strings, as in str1.append(", ya betcha!);
  - Strings can be compared, as in if (str1 == str2)
    or if (str1 <= str2)
    or int f = str1.compare(str2) (f = 0 if equal, f is negative if
      str1 is lexicographically less than str2, f positive otherwise)
    or int f = str1.compare(2, 5, str2, 0, 5) which compares 5 characters
      of str1 starting with subscript 2 with 5 characters of str2 starting
       with subscript 0.
  - str1.length returns the length of the string
  - If you perform an operation that changes the length of the string,
    the string class allocates (or releases) memory and updates the
    string length
  - You can get a substring of a string, for example
    str2 = str1.substr(2, 3) gives a substring 3 characters long starting
    at index 2
  - str1.empty returns true if there are no characters in the string
  - Know that there are several search routines, such as
    str1.find("search string");
    which returns the subscript of the first found location or
    string::npos if not found.  str1.rfind searches from the end of the
    string, and there are a few others as well
  - Know that there are several replacement and insertion routines:
    str1.erase, str1.replace, str1.insert
Programs from class today:

Character array style: repeats.cpp

String style: repeats_alt.cpp