 2006 Pearson Education, Inc. All rights reserved. 1 18 Class string and String Stream Processing.

Slides:



Advertisements
Similar presentations
StructuresStructures Systems Programming. Systems Programming: Structures 2 Systems Programming: 2 StructuresStructures Structures Structures Typedef.
Advertisements

2007 Pearson Education, Inc. All rights reserved C Structures, Unions, Bit Manipulations and Enumerations.
Chapter 10 C Structures, Unions, Bit Manipulations and Enumerations Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc.
C How to Program, 6/e © by Pearson Education, Inc. All Rights Reserved.
LECTURE 17 C++ Strings 18. 2Strings Creating String Objects 18 C-string C++ - string \0 Array of chars that is null terminated (‘\0’). Object.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 7 - Pointers Outline 7.1Introduction 7.2Pointer.
Chapter 10.
 2006 Pearson Education, Inc. All rights reserved Operator Overloading.
Today’s Class Class string –The basics –Assignment –Concatenation –Compare & swap –Find –Conversion to C-style char * strings –Iterators.
 2006 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
Operator Overloading in C++ Systems Programming. Systems Programming: Operator Overloading 22   Fundamentals of Operator Overloading   Restrictions.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 10 - C Structures, Unions, Bit Manipulations,
5 5 Arrays. OBJECTIVES In this lecture we will learn:  Case switch  To use the array data structure to represent a set of related data items.  To declare.
計算機概論實習 How to Use string Template class basic_string String manipulation (copying, searching, etc.) typedef basic_string string; Also typedef.
 2006 Pearson Education, Inc. All rights reserved Class string and String Stream Processing.
 2006 Pearson Education, Inc. All rights reserved Arrays.
 2003 Prentice Hall, Inc. All rights reserved. 1 Arrays –Structures of related data items –Static entity (same size throughout program) A few types –Pointer-based.
 2006 Pearson Education, Inc. All rights reserved Pointers.
 2006 Pearson Education, Inc. All rights reserved Bits, Characters, C-Strings and struct s.
 2006 Pearson Education, Inc. All rights reserved Arrays and Vectors.
 Pearson Education, Inc. All rights reserved Arrays.
C++ standard strings. Standard library of C++ language STL STL (The main part of standard library of C++ language) Stream classes Stream classes String.
Operator Overloading in C++
Review of C++ Programming Part II Sheng-Fang Huang.
 2006 Pearson Education, Inc. All rights reserved Classes: A Deeper Look.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 19 Clicker Questions November 3, 2009.
Chapter 7: Arrays. In this chapter, you will learn about: One-dimensional arrays Array initialization Declaring and processing two-dimensional arrays.
CSIS 123A Lecture 6 Strings & Dynamic Memory. Introduction To The string Class Must include –Part of the std library You can declare an instance like.
 2006 Pearson Education, Inc. All rights reserved Arrays.
 2006 Pearson Education, Inc. All rights reserved Classes: A Deeper Look, Part 2.
C++ String Class. Outline  String Initialization  Basic Operations  Comparisons  Substrings  Swapping Strings  String Size  Finding Strings and.
(continue) © by Pearson Education, Inc. All Rights Reserved.
 2006 Pearson Education, Inc. All rights reserved Operator Overloading; String and Array Objects.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Chapter 10 - C Structures, Unions, Bit Manipulations,
STL List // constructing lists #include int main () { // constructors used in the same order as described above: std::list first; // empty list of ints.
 2008 Pearson Education, Inc. All rights reserved Operator Overloading.
 2008 Pearson Education, Inc. All rights reserved Pointers and Pointer-Based Strings.
Chapter 13 – C++ String Class. String objects u Do not need to specify size of string object –C++ keeps track of size of text –C++ expands memory region.
 2007 Pearson Education, Inc. All rights reserved C Structures, Unions, Bit Manipulations and Enumerations.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 8: User-Defined Simple Data Types, Namespaces, and the string Type.
 2003 Prentice Hall, Inc. All rights reserved.m ECE 2552 Dr. Këpuska based on Dr. S. Kozaitis Summer Chapter 15 - Class string and String Stream.
String Class. C-style and C++ string Classes C-style strings, called C-strings, consist of characters stored in an array ( we’ll look at them later) C++
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
 2008 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
C++ STRINGS ● string is part of the Standard C++ Library ● new stuff: ● cin : standard input stream (normally the keyboard) of type istream. ● >> operator.
C++ How to Program, 9/e © by Pearson Education, Inc. All Rights Reserved.
C++ Programming Lecture 14 Arrays – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Arrays Outline 6.1Introduction 6.2Arrays 6.3Declaring.
 2007 Pearson Education, Inc. All rights reserved C File Processing.
 2006 Pearson Education, Inc. All rights reserved Arrays and Vectors.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 8: Namespaces, the class string, and User-Defined Simple Data Types.
Operator Overloading; String and Array Objects
Class string and String Stream Processing: A Deeper Look
Strings, StringBuilder, and Character
C Structures, Unions, Bit Manipulations and Enumerations
Standard Template Library (STL)
C Structures, Unions, Bit Manipulations and Enumerations
Primitive Types Vs. Reference Types, Strings, Enumerations
Array Lists Chapter 6 Section 6.1 to 6.3
C Structures, Unions, Bit Manipulations and Enumerations
C Arrays.
7 Arrays.
C++ STRINGS string is part of the Standard C++ Library
Operator Overloading; String and Array Objects
Pointers and Pointer-Based Strings
Operator Overloading; String and Array Objects
Class string and String Stream Processing
Operator Overloading; String and Array Objects
4.1 Introduction Arrays A few types Structures of related data items
Chapter 12: More on C-Strings and the string Class
Presentation transcript:

 2006 Pearson Education, Inc. All rights reserved Class string and String Stream Processing

 2006 Pearson Education, Inc. All rights reserved. 2 OBJECTIVES In this chapter you will learn:  To create and use struct s.  To pass struct s to functions by value and by reference.  To use typedef to create aliases for previously defined data types and struct s. To use class string from the C++ Standard Library to treat string s as full-fledged objects.  To assign, concatenate, compare, search and swap string s.  To determine string characteristics.  To find, replace and insert characters in a string.  To convert string s to C-style strings and vice versa.  To use string iterators.  To perform input from and output to string s in memory.

 2006 Pearson Education, Inc. All rights reserved. 3 Introduction Structures – Similar to classes Can contain access specifiers, member functions, constructors and destructors Only difference is that structure members are public by default (class members are private by default) Bitfields – Can specify the exact number of bits to use for a variable C-style string manipulation functions – Process blocks of memory as arrays of bytes

 2006 Pearson Education, Inc. All rights reserved. 4 Structure Definitions Structures – Aggregate data types Built using elements of several types

 2006 Pearson Education, Inc. All rights reserved. 5 Structure Definitions (Cont.) Structures (Cont.) – Example struct Card { char *face; char *suit; }; – Keyword struct – Structure name Card Used to declare variables of the structure type – Data members face and suit Must have unique names – Ending semicolon

 2006 Pearson Education, Inc. All rights reserved. 6 Common Programming Error Forgetting the semicolon that terminates a structure definition is a syntax error.

 2006 Pearson Education, Inc. All rights reserved. 7 Structure Definitions (Cont.) Structures (Cont.) – Structure cannot contain an instance of itself Can contain a pointer to an instance of itself (self-referential) – Can declare variables of the structure in the structure definition Comma-separated list of variable names between closing brace and semicolon – Structure name is optional Variables of unnamed structures can be declared only by placing them after structure definition, before semicolon

 2006 Pearson Education, Inc. All rights reserved. 8 Software Engineering Observation Provide a structure name when creating a structure type. The structure name is required for declaring new variables of the structure type later in the program, declaring parameters of the structure type and, if the structure is being used like a C++ class, specifying the name of the constructor and destructor.

 2006 Pearson Education, Inc. All rights reserved. 9 Structure Definitions (Cont.) Structures (Cont.) – Built-in operations that may be performed on structure objects Assignment operator = Address operator & Member-access operators. and -> sizeof operator Other operators can be overloaded to work with any structure

 2006 Pearson Education, Inc. All rights reserved. 10 Structure Definitions (Cont.) Structures (Cont.) – “Holes” in a structure Because some computers store data types only on certain memory boundaries Structure members are not necessarily stored in consecutive memory

 2006 Pearson Education, Inc. All rights reserved. 11 Common Programming Error Comparing structures is a compilation error.

 2006 Pearson Education, Inc. All rights reserved. 12 Fig | Possible storage alignment for a variable of type Example, showing an undefined area in memory.

 2006 Pearson Education, Inc. All rights reserved. 13 Portability Tip Because the size of data items of a particular type is machine dependent, and because storage alignment considerations are machine dependent, so too is the representation of a structure.

 2006 Pearson Education, Inc. All rights reserved. 14 Initializing Structures Initializing a structure – Structures can be initialized using initializer lists Example – Card oneCard = { "Three", "Hearts" }; Initializes member face to "Three" Initializes member suit to "Hearts" If there are fewer initializers than members – Remaining members are initialized to default values – Structure variables declared outside any function are initialized to default values – Structure variables may also be initialized by Assigning a structure variable of the same type Assigning to individual members

 2006 Pearson Education, Inc. All rights reserved. 15 Using Structures with Functions Passing structures to functions – Entire structure or individual members can be passed to functions – Structures are passed by value, by default To pass a structure by reference – Pass address of the structure object – Pass reference to the structure object – Pass array of the structure objects – To pass an array by value Encapsulate it inside a structure, which is passed by value

 2006 Pearson Education, Inc. All rights reserved. 16 Performance Tip Passing structures (and especially large structures) by reference is more efficient than passing them by value (which requires the entire structure to be copied).

 2006 Pearson Education, Inc. All rights reserved. 17 typedef Keyword typedef – Used for creating synonyms for previously defined data types Often defined to create shorter, simpler or more readable type names – Example typedef Card *CardPtr; – Defines type name CardPtr as a synonym for Card * – Does not create a new type Only a new type name that can be used as an alias for an existing type name

 2006 Pearson Education, Inc. All rights reserved. 18 Good Programming Practice Capitalize typedef names to emphasize that these names are synonyms for other type names.

 2006 Pearson Education, Inc. All rights reserved. 19 Portability Tip Synonyms for built-in data types can be created with typedef to make programs more portable. For example, a program can use typedef to create alias Integer for four-byte integers. Integer can then be aliased to int on systems with four-byte integers and can be aliased to long int on systems with two-byte integers where long int values occupy four bytes. Then, the programmer simply declares all four-byte integer variables to be of type Integer.

 2006 Pearson Education, Inc. All rights reserved. 20 Outline DeckOfCa rds.h (1 of 1) Define structure Card Class DeckOfCards contains an array of Card structure objects

 2006 Pearson Education, Inc. All rights reserved. 21 Outline DeckOfCa rds.cpp (1 of 3)

 2006 Pearson Education, Inc. All rights reserved. 22 Outline DeckOfCa rds.cpp (2 of 3) Initialize Card members by assignment

 2006 Pearson Education, Inc. All rights reserved. 23 Outline DeckOfCa rds.cpp (3 of 3) Shuffle cards by performing 52 swaps in a single pass of the array

 2006 Pearson Education, Inc. All rights reserved. 24 Outline fig22_04.c pp (1 of 2)

 2006 Pearson Education, Inc. All rights reserved. 25 Outline fig22_04.c pp (2 of 2)

 2006 Pearson Education, Inc. All rights reserved Introduction (Cont.) string object – Initialization string empty(); – Creates an empty string containing no characters string text( "hello" ); – Creates a string containing the characters "hello" string name( 8, 'x' ); – Creates a string containing eight 'x' characters string month = "March"; – Implicitly performs string month( "March" );

 2006 Pearson Education, Inc. All rights reserved Introduction (Cont.) string object (Cont.) – No conversion from int or char in a string definition Examples (produce syntax errors) – string error1 = 'c'; – string error2( 'u' ); – string error3 = 22; – string error4( 8 ); – Assigning a single character to a string object is allowed Example – string1 = 'n';

 2006 Pearson Education, Inc. All rights reserved. 28 Common Programming Error 18.1 Attempting to convert an int or char to a string via an initialization in a declaration or via a constructor argument is a compilation error.

 2006 Pearson Education, Inc. All rights reserved Introduction C++ class template basic_string – Provides typical string-manipulation operations – Defined in namespace std – typedef s For char – typedef basic_string string; Also provides one for wchar_t

 2006 Pearson Education, Inc. All rights reserved Introduction (Cont.) string object (Cont.) – Member functions length and size Return the length of the string – The subscript operator [] Used to access and modify individual characters First subscript is 0, last subscript is length() – 1

 2006 Pearson Education, Inc. All rights reserved Introduction (Cont.) string object (Cont.) – Stream extraction operator ( >> ) Example – cin >> stringObject; Input is delimited by white-space characters – Function getline is overloaded for string s Example – getline( cin, string1 ); Input is delimited by a newline ( ' \n ' );

 2006 Pearson Education, Inc. All rights reserved string Assignment and Concatenation Member function assign – Copies the contents of a string into another string – Single-argument version Copies contents of the string argument into the current string – Three-argument version Copies a specified range of characters Example – targetString.assign( sourceString, start, numberOfCharacters );

 2006 Pearson Education, Inc. All rights reserved. 33 Outline Fig18_01.cpp (1 of 3) Assign the value of string1 to string2 with the assignment operator Copy string1 into string3 with the assign member function Use the subscript operator to assign to individual characters Use member functions length and at to output the contents of string3 one character at a time

 2006 Pearson Education, Inc. All rights reserved. 34 Outline Fig18_01.cpp (2 of 3) Initialize string4 to the result of concatenating string1 and "apult" using the addition operator + Concatenate string3 and "pet" using the addition assignment operator += Concatenate string1 and "acomb" Append the string "comb" (the characters from subscript 4 to the end of string1 ) to empty string string5

 2006 Pearson Education, Inc. All rights reserved. 35 Outline Fig18_01.cpp (3 of 3)

 2006 Pearson Education, Inc. All rights reserved string Assignment and Concatenation (Cont.) Member function at – Allows access to individual characters Much like the subscript operator does – Provides checked access (or range checking) Going past the end of the string throws an out_of_range exception Subscript operator does not provide checked access

 2006 Pearson Education, Inc. All rights reserved. 37 Common Programming Error 18.2 Accessing a string subscript outside the bounds of the string using function at is a logic error that causes an out_of_range exception.

 2006 Pearson Education, Inc. All rights reserved. 38 Common Programming Error 18.3 Accessing an element beyond the size of the string using the subscript operator is an unreported logic error.

 2006 Pearson Education, Inc. All rights reserved string Assignment and Concatenation (Cont.) string concatenation – Addition operator and addition assignment operator Overloaded for string concatenation – Member function append Single-argument version – Concatenates contents of the string argument to end of the current string Three-argument version – Concatenates specified range of characters from the string argument to end of the current string

 2006 Pearson Education, Inc. All rights reserved Comparing string s Overloaded comparison operators – Operators ==, !=,, = are overloaded for string s All such operators return bool values Member function compare – Compares the values of two string s Returns 0 if the string s are equivalent Returns positive number if the current string is lexicographically greater than the argument string Returns negative number if the current string is lexicographically less than the argument string

 2006 Pearson Education, Inc. All rights reserved Comparing string s (Cont.) Member function compare (Cont.) – Overloaded versions With five arguments – First two arguments specify starting subscript and length in the current string – Third argument specifies the comparison string – Last two arguments specify starting subscript and length in the comparison string With three arguments – First two arguments specify starting subscript and length in the current string – Third argument specifies the comparison string

 2006 Pearson Education, Inc. All rights reserved. 42 Outline Fig18_02.cpp (1 of 4) Test string1 against string4 for equality using the overloaded equality operator Test string1 against string4 using the overloaded greater-than operator

 2006 Pearson Education, Inc. All rights reserved. 43 Outline Fig18_02.cpp (2 of 4) Compare string1 to string2 Compare "sting" (from string1 ) to "sting" (from string3 )

 2006 Pearson Education, Inc. All rights reserved. 44 Outline Fig18_02.cpp (3 of 4) Compare "Hello" (from string4 ) to string2

 2006 Pearson Education, Inc. All rights reserved. 45 Outline Fig18_02.cpp (4 of 4) Compare "Hel" (from string2 ) to string4

 2006 Pearson Education, Inc. All rights reserved Substrings Member function substr – Retrieves a substring from a string Returns a new string object copied from the source string – First argument Specifies beginning subscript of desired substring – Second argument Specifies length of desired substring

 2006 Pearson Education, Inc. All rights reserved. 47 Outline Fig18_03.cpp (1 of 1) Retrieve a substring from string1

 2006 Pearson Education, Inc. All rights reserved Swapping string s Member function swap – Swaps contents of the current string and the argument string – Useful for implementing programs that sort strings

 2006 Pearson Education, Inc. All rights reserved. 49 Outline Fig18_04.cpp (1 of 1) Swap the values of first and second

 2006 Pearson Education, Inc. All rights reserved string Characteristics Characteristics of string s – Capacity Number of characters that can be stored without allocating more memory – Must be at least equal to the size, can be greater – Depends on the implementation Returned by member function capacity – Maximum size Largest possible size a string can have – If exceeded, a length_error exception is thrown Returned by member function max_size

 2006 Pearson Education, Inc. All rights reserved. 51 Outline Fig18_05.cpp (1 of 4)

 2006 Pearson Education, Inc. All rights reserved. 52 Outline Fig18_05.cpp (2 of 4) Use the overloaded += operator to concatenate a 46-character- long string to string1 Increase the length of string1 by 10 characters Output the capacity, maximum size, size, length and whether the string is empty

 2006 Pearson Education, Inc. All rights reserved. 53 Outline Fig18_05.cpp (3 of 4)

 2006 Pearson Education, Inc. All rights reserved. 54 Outline Fig18_05.cpp (4 of 4)

 2006 Pearson Education, Inc. All rights reserved string Characteristics (Cont.) Member function empty – Returns true if the string is empty Member function resize – Changes the length of the current string Additional elements are set to null characters

 2006 Pearson Education, Inc. All rights reserved. 56 Performance Tip 18.1 To minimize the number of times memory is allocated and deallocated, some string class implementations provide a default capacity above and beyond the length of the string.

 2006 Pearson Education, Inc. All rights reserved Finding Strings and Characters in a string Member function find – Attempts to find specified string in the current string Returns starting location of the string if found Returns the value string::npos otherwise – All string find -related functions return this const static value to indicate the target was not found Member function rfind – Searches current string backward (right-to-left) for the specified string If the string is found, its subscript location is returned

 2006 Pearson Education, Inc. All rights reserved. 58 Outline Fig18_06.cpp (1 of 3) Attempt to find "is" in string1 using function find Search string1 backward for "is" Locate the first occurrence in string1 of any character in "misop" Find the last occurrence in string1 of any character in "misop"

 2006 Pearson Education, Inc. All rights reserved. 59 Outline Fig18_06.cpp (2 of 3) Find the first character in string1 not contained in the string argument string1 contains only characters specified in the string argument, so string::npos is returned

 2006 Pearson Education, Inc. All rights reserved. 60 Outline Fig18_06.cpp (3 of 3)

 2006 Pearson Education, Inc. All rights reserved Finding Strings and Characters in a string (Cont.) Member function find_first_of – Locates first occurrence in the current string of any character in the specified string Member function find_last_of – Locates last occurrence in the current string of any character in the specified string Member function find_first_not_of – Locates first occurrence in the current string of any character not contained in the specified string

 2006 Pearson Education, Inc. All rights reserved Replacing Characters in a string Member function erase – One-argument version Erases everything from (and including) the specified character position to the end of the string Member function replace – Three-argument version Replaces characters in the range specified by the first two arguments with the specified string (third argument) – Five-argument version Replaces characters in the range specified by the first two arguments with characters from the range in the specified string (third argument) specified by the last two arguments

 2006 Pearson Education, Inc. All rights reserved. 63 Outline Fig18_07.cpp (1 of 3) Erase characters from string1 starting at position 62

 2006 Pearson Education, Inc. All rights reserved. 64 Outline Fig18_07.cpp (2 of 3) Locate each occurrence of the space character and replace it with a period Continue searching for the next space character at position + 1 Find every period and replace it and the neext character with two semicolons

 2006 Pearson Education, Inc. All rights reserved. 65 Outline Fig18_07.cpp (3 of 3)

 2006 Pearson Education, Inc. All rights reserved Inserting Characters into a string Member function insert – For inserting characters into a string Two-argument version – First argument specifies insertion location – Second argument specifies string to insert Four-argument version – First argument specifies insertion location – Second argument specifies string to insert from – Third and fourth arguments specify starting and last element in source string to be inserted Using string::npos causes the entire string to be inserted

 2006 Pearson Education, Inc. All rights reserved. 67 Outline Fig18_08.cpp (1 of 2)

 2006 Pearson Education, Inc. All rights reserved. 68 Outline Fig18_08.cpp (2 of 2) Insert string2 ’ s contents before element 10 of string1 Insert string4 before string3 ’ s element 3

 2006 Pearson Education, Inc. All rights reserved Conversion to C-Style Pointer- Based char * Strings Member function copy – Copies current string into the specified char array Must manually add terminating null character afterward Member function c_str – Returns a const char * containing a copy of the current string Automatically adds terminating null character Member function data – Returns non-null-terminated C-style character array If original string object is later modified, this pointer becomes invalid

 2006 Pearson Education, Inc. All rights reserved. 70 Outline Fig18_09.cpp (1 of 2) Copy object string1 into the char array pointed to by ptr2 Manually place a terminating null character at the end of the array

 2006 Pearson Education, Inc. All rights reserved. 71 Outline Fig18_09.cpp (2 of 2) Output the null-terminated array pointed to by the const char * returned by member function c_str Assign the const char * ptr1 a pointer returned by member function data

 2006 Pearson Education, Inc. All rights reserved. 72 Common Programming Error 18.4 Not terminating the character array returned by data with a null character can lead to execution- time errors.

 2006 Pearson Education, Inc. All rights reserved. 73 Good Programming Practice 18.1 Whenever possible, use the more robust string class objects rather than C-style pointer-based strings.

 2006 Pearson Education, Inc. All rights reserved Iterators string iterators – Provide access to individual characters Syntax similar to pointers – string::iterator and string::const_iterator A const_iterator cannot modify the string string member function begin – Returns iterator positioned at the beginning of the string – Another version returns const_iterator s for const string s string member function end – Returns iterator (or const_iterator ) positioned after the last element of the string

 2006 Pearson Education, Inc. All rights reserved. 75 Outline Fig18_10.cpp (1 of 1) const_iterator iterator1 is initialized to the beginning of string1 Use iterator iterator1 to “ walk through ” string1

 2006 Pearson Education, Inc. All rights reserved Iterators (Cont.) string iterators (Cont.) – Using iterators Dereference iterator to access individual characters Use operator ++ to advance iterator one position – reverse_iterator and const_reverse_iterator Used for reverse traversal of string s (from the end toward the beginning) string member functions rend and rbegin – Return reverse_iterators and const_reverse_iterators

 2006 Pearson Education, Inc. All rights reserved. 77 Error-Prevention Tip 18.1 Use string member function at (rather than iterators) when you want the benefit of range checking.

 2006 Pearson Education, Inc. All rights reserved. 78 Good Programming Practice 18.2 When the operations involving the iterator should not modify the data being processed, use a const_iterator. This is another example of employing the principle of least privilege.

 2006 Pearson Education, Inc. All rights reserved String Stream Processing String stream processing (a.k.a. in-memory I/O) – Enables inputting from, and outputting to, string s in memory – Class istringstream A typedef for basic_istringstream Supports input from a string – Provides same functionality as istream – Class ostringstream A typedef for basic_ostringstream Supports output to a string – Provides same functionality as ostream – Program must include and

 2006 Pearson Education, Inc. All rights reserved String Stream Processing (Cont.) Application of string stream processing – Data validation Read an entire line from the input stream into a string Scrutinize and repair contents of the string Input from the string to program variables – Preserving the screen image Data can be prepared in a string – Mimicking the edited screen format The string could then be written to a disk file

 2006 Pearson Education, Inc. All rights reserved String Stream Processing (Cont.) ostringstream object – Uses a string to store output data Member function str returns copy of that string – Data can be appended to the string in memory by using stream insertion operator istringstream object – Inputs data from a string in memory to program variables Input works identically to input from files – End of the string is interpreted as end-of-file – Member function good returns true if any data remains

 2006 Pearson Education, Inc. All rights reserved. 82 Outline Fig18_11.cpp (1 of 2) Create ostringstream object outputString Output a series of strings and numerical values to outputString

 2006 Pearson Education, Inc. All rights reserved. 83 Outline Fig18_11.cpp (2 of 2) Display a copy of the string contained in outputString Append more data to the string in memory by issuing another stream insertion operation

 2006 Pearson Education, Inc. All rights reserved. 84 Outline Fig18_12.cpp (1 of 2) Create istringstream inputString to contain the data in string input Extract characters to program variables

 2006 Pearson Education, Inc. All rights reserved. 85 Outline Fig.18_12.cpp (2 of 2) Test if any data remains