### Doing String Input and Output

The IString class overloads the input and output operators of the I/O Stream Class Library so that you can extract IString objects from streams and insert IString objects into them. The input operator reads characters from the input stream until a white-space character or EOF is encountered. The IString class also defines a member function to read a single line from an input stream. The following example shows uses of the input and output operators for IString and the lineFrom function:

    //Using the IString I/O operators and the lineFrom function

    #include <istring.hpp>
    #include <iostream.h>

    void main() {
       IString Str1, Str2, Str3;
       Str1="Enter some text:";
       char test[80];

       // Write prompt
       cout << Str1;
       // Get input
       cin >> Str2;
       // This only reads in one word of text, so we should
       // check to see if this was the only word on the line:
       if (cin.peek()!='\n') {
         // there's more text on this line so ignore it
         cin.ignore(1000,'\n');
         }
       // Change prompt
       Str1.insert("more ",Str1.indexOf(" text:"));
       // Write prompt again
       cout << Str1;
       // Get line of input
       Str3=IString::lineFrom(cin,'\n');
       // Write output
       cout << "First word of first input: " << Str2 << '\n'
            << "Full text of second input: " << Str3 << endl;
       }

This example produces the output shown below in regular type, given the input shown in bold:

    Enter some text:Here is my first string
    Enter some more text:Here is my second string
    First word of first input: Here
    Full text of second input: Here is my second string

Note that, although null characters are allowed within an IString object, a null character in an input string is treated as the end of the input, and a null character in an IString being written to an output stream ends the output of that IString.