string - C. Morris

An Introduction to
Programming with C++
Sixth Edition
Chapter 13
Strings
Objectives
• Utilize string memory locations in a program
• Get string input using the getline function
• Ignore characters using the ignore function
• Determine the number of characters in a string
• Access the characters in a string
• Search a string
An Introduction to Programming with C++, Sixth Edition
2
Objectives (cont’d.)
•
•
•
•
•
Remove characters from a string
Replace characters in a string
Insert characters within a string
Duplicate characters within a string
Concatenate strings
An Introduction to Programming with C++, Sixth Edition
3
The string Data Type
• The string data type is not a fundamental data
type in C++
• Added to C++ through use of string class
• To use the string class, a program must contain
the #include <string> directive
• You can use the string class to create string
variables or string named constants
• Memory locations of type string are initialized
with string literal constants—0 or more characters
enclosed in double quotation marks (“”)
An Introduction to Programming with C++, Sixth Edition
4
The string Data Type (cont’d.)
Figure 13-1 How to declare and initialize string variables and named constants
An Introduction to Programming with C++, Sixth Edition
5
The Creative Sales Program
• Program gets a salesperson’s name and sales
amount from keyboard
• Calculates salesperson’s bonus and displays
salesperson’s name and bonus amount
• Extraction operator can be used to get string input
from keyboard
• Stops reading characters when it encounters a
white-space character (blank, tab, or newline
character)
An Introduction to Programming with C++, Sixth Edition
6
The Creative Sales Program (cont’d.)
Figure 13-2 Problem specification and IPO chart for the Creative Sales program
An Introduction to Programming with C++, Sixth Edition
7
The Creative Sales Program (cont’d.)
Figure 13-3 How to use the extraction operator (>>) to get string input
An Introduction to Programming with C++, Sixth Edition
8
The getline Function
• The getline function obtains string data from the
keyboard and stores it in a string variable
• Syntax is:
getline(cin, stringVariableName
[, delimiterCharacter]);
• Three actual arguments (first two required):
– cin argument refers to computer keyboard
– stringVariableName argument is name of a string
variable in which to store input
– Optional delimiterCharacter indicates character that
immediately follows last character of string
An Introduction to Programming with C++, Sixth Edition
9
The getline Function (cont’d.)
• Function will continue to read characters entered at
keyboard until it encounters a delimiter character
• Default delimiter character is newline character
• When the function encounters a delimiter
character, it discards the character—process called
consuming the character
• Newline character is designated by ‘\n’
• Backslash is called an escape character
• Backslash and character following it are called an
escape sequence
An Introduction to Programming with C++, Sixth Edition
10
Figure 13-4 How to use the getline function to get string input from the keyboard
An Introduction to Programming with C++, Sixth Edition
11
Figure 13-5 Creative Sales program
An Introduction to Programming with C++, Sixth Edition
12
The getline Function (cont’d.)
Figure 13-6 Sample run of the Creative Sales program
An Introduction to Programming with C++, Sixth Edition
13
Figure 13-7 Partial Creative Sales program showing the modifications
Figure 13-8 Results of running the modified Creative Sales program
An Introduction to Programming with C++, Sixth Edition
14
The ignore Function
• The ignore function instructs the computer to
read and ignore characters stored in the cin object
by consuming (discarding) them
• Syntax is:
– cin.ignore([numberOfCharacters][, delimiterCharacter]);
• Has two actual arguments, both optional:
– numberOfCharacters argument is maximum number
of characters function should consume (default is 1)
– delimiterCharacter argument stops ignore function
from reading and discarding any more characters
when consumed
An Introduction to Programming with C++, Sixth Edition
15
Figure 13-9 How to use the ignore function
An Introduction to Programming with C++, Sixth Edition
16
Figure 13-10 Modified Creative Sales program with the ignore function
An Introduction to Programming with C++, Sixth Edition
17
The ignore Function (cont’d.)
Figure 13-11 Sample run of the modified Creative
Sales program with the ignore function
An Introduction to Programming with C++, Sixth Edition
18
The ZIP Code Program
• Program reads in a string from the user and verifies
that it contains exactly five characters
• If string contains exactly five characters, program
displays “Valid length”
• Otherwise, displays “Invalid length”
An Introduction to Programming with C++, Sixth Edition
19
The ZIP Code Program (cont’d.)
Figure 13-12 Problem specification and IPO chart for the ZIP Code program
An Introduction to Programming with C++, Sixth Edition
20
Determining the Number of Characters
Contained in a string Variable
• You use string class’s length function to
determine the number of characters in a string
variable
• Syntax is:
– string.length()
• Returns number of characters contained in string
An Introduction to Programming with C++, Sixth Edition
21
Determining the Number of Characters
Contained in a string Variable (cont’d.)
Figure 13-13 How to use the length function
An Introduction to Programming with C++, Sixth Edition
22
Figure 13-13 How to use the length function (cont’d.)
An Introduction to Programming with C++, Sixth Edition
23
Figure 13-14 The ZIP code program
An Introduction to Programming with C++, Sixth Edition
24
Determining the Number of Characters
Contained in a string Variable (cont’d.)
Figure 13-15 Sample run of the ZIP code program
An Introduction to Programming with C++, Sixth Edition
25
Accessing the Characters Contained
in a string Variable
• The substr function allows you to access any
number of characters contained in a string
variable by returning the specified characters
• Syntax is:
– string.substr(subscript[, count])
• Has two arguments (first is required):
– subscript argument represents subscript of first
character you want to access in string
– count argument is number of characters to return
after character specified by subscript
An Introduction to Programming with C++, Sixth Edition
26
Accessing the Characters Contained
in a string Variable (cont’d.)
• If you omit count argument, function returns all
characters from subscript position through end of
string
• A string is equivalent to a one-dimensional array of
characters
• Each character has a unique subscript that
indicates character’s position in the string
An Introduction to Programming with C++, Sixth Edition
27
Accessing the Characters Contained
in a string Variable (cont’d.)
Figure 13-16 How to use the substr function
An Introduction to Programming with C++, Sixth Edition
28
Figure 13-16 How to use the substr function (cont’d.)
An Introduction to Programming with C++, Sixth Edition
29
Accessing the Characters Contained
in a string Variable (cont’d.)
Figure 13-17 Modified problem specification for the ZIP code program
An Introduction to Programming with C++, Sixth Edition
30
Figure 13-17 Modified IPO chart information and C++
instructions for the ZIP code program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
31
Figure 13-17 Modified IPO chart information and C++
instructions for the ZIP code program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
32
Accessing the Characters Contained
in a string Variable (cont’d.)
Figure 13-17 Modified IPO chart information and C++
instructions for the ZIP code program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
33
Accessing the Characters Contained
in a string Variable (cont’d.)
Figure 13-18 Modified ZIP code program
An Introduction to Programming with C++, Sixth Edition
34
Figure 13-18 Modified ZIP code program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
35
Accessing the Characters Contained
in a string Variable (cont’d.)
Figure 13-19 Sample run of the modified ZIP code program
An Introduction to Programming with C++, Sixth Edition
36
The Rearranged Name Program
• Program allows user to enter a person’s first and
last names, separated by a space
• Displays the person’s last name followed by a
comma, a space, and the person’s first name
• Searches the input string for the space that
separates the first and last names
An Introduction to Programming with C++, Sixth Edition
37
Figure 13-20 Problem specification and IPO chart for the rearranged name program
An Introduction to Programming with C++, Sixth Edition
38
Searching the Contents of a string
Variable
• You use the find function to search contents of a
string variable to determine whether it contains a
specific sequence of characters
• Syntax is:
– string.find(searchString, subscript)
– searchString argument is astring for which you are
searching within string
– subscript argument specifies starting position for the
search
An Introduction to Programming with C++, Sixth Edition
39
Searching the Contents of a string
Variable (cont’d.)
• find function performs a case-sensitive search
(uppercase and lowercase letters are not
equivalent)
– When searchString is contained within string,
function returns an integer that indicates beginning
position of searchString within string
– Function returns -1 when searchString is not
contained within string
An Introduction to Programming with C++, Sixth Edition
40
Searching the Contents of a string
Variable (cont’d.)
Figure 13-21 How to use the find function
An Introduction to Programming with C++, Sixth Edition
41
Figure 13-21 How to use the find function (cont’d.)
An Introduction to Programming with C++, Sixth Edition
42
Figure 13-22 Rearranged name program
An Introduction to Programming with C++, Sixth Edition
43
Searching the Contents of a string
Variable (cont’d.)
Figure 13-23 Sample run of the rearranged name program
An Introduction to Programming with C++, Sixth Edition
44
The Annual Income Program
• Program allows the user to enter a company’s
annual income
• Removes any commas and spaces from user’s
entry before displaying annual income
An Introduction to Programming with C++, Sixth Edition
45
The Annual Income Program (cont’d.)
Figure 13-24 Problem specification for the annual income program
An Introduction to Programming with C++, Sixth Edition
46
Figure 13-24 IPO chart for the annual income program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
47
Removing Characters from a string
Variable
• You can use the erase function to remove one or
more characters from a string variable
• Syntax is:
– string.erase(subscript[, count]);
– subscript is position of first character you want to
remove
– Optional count argument is an integer that specifies
number of characters you want removed
– If you omit count, function removes all characters
from subscript through end of string
An Introduction to Programming with C++, Sixth Edition
48
Removing Characters from a string
Variable (cont’d.)
Figure 13-25 How to use the erase function
An Introduction to Programming with C++, Sixth Edition
49
Figure 13-25 How to use the erase function (cont’d.)
An Introduction to Programming with C++, Sixth Edition
50
Removing Characters from a string
Variable (cont’d.)
Figure 13-26 Annual income program
An Introduction to Programming with C++, Sixth Edition
51
Figure 13-26 Annual income program (cont’d.)
An Introduction to Programming with C++, Sixth Edition
52
Removing Characters from a string
Variable (cont’d.)
Figure 13-27 Sample run of the annual income program
An Introduction to Programming with C++, Sixth Edition
53
Replacing Characters in a string
Variable
• The replace function replaces one sequence of
characters in a string variable with another
• Syntax is:
– string.replace(subscript, count,
replacementString);
– subscript argument specifies where to begin
replacing characters in string
– count argument indicates number of characters to
replace
– replacementString argument contains replacement
characters
An Introduction to Programming with C++, Sixth Edition
54
Replacing Characters in a string
Variable
Figure 13-28 How to use the replace function
An Introduction to Programming with C++, Sixth Edition
55
Figure 13-28 How to use the replace function (cont’d.)
An Introduction to Programming with C++, Sixth Edition
56
Replacing Characters in a string
Variable (cont’d.)
Figure 13-29 Partial annual income program showing the replace function
An Introduction to Programming with C++, Sixth Edition
57
The Social Security Number Program
• Program allows user to enter a Social Security
number without hyphens
• If user’s entry contains nine characters, program
inserts hyphens in appropriate places and displays
number on screen
• If user does not enter nine characters, program
displays an appropriate message
An Introduction to Programming with C++, Sixth Edition
58
Figure 13-30 Problem specification and IPO
chart for the Social Security number program
An Introduction to Programming with C++, Sixth Edition
59
Inserting Characters within a string
Variable
• You can use the insert function to insert
characters into a string variable
• Syntax is:
– string.insert(subscript, insertString);
– subscript specifies where in string you want
characters inserted
– insertString specifies characters to be inserted
An Introduction to Programming with C++, Sixth Edition
60
Figure 13-31 How to use the insert function
An Introduction to Programming with C++, Sixth Edition
61
Figure 13-32 Social Security number program
An Introduction to Programming with C++, Sixth Edition
62
Inserting Characters within a string
Variable
Figure 13-33 Sample run of the Social Security number program
An Introduction to Programming with C++, Sixth Edition
63
The Company Name Program
• Program allows user to enter name of a company
• Displays name with a row of hyphens below it
An Introduction to Programming with C++, Sixth Edition
64
The Company Name Program (cont’d.)
Figure 13-34 Problem specification and IPO chart for the company name program
An Introduction to Programming with C++, Sixth Edition
65
Duplicating a Character within a
string Variable
• You can use the assign function to duplicate one
character a specified number of times and assign
the resulting string to a string variable
• Syntax is:
– string.assign(count, character);
– count argument is an integer that indicates the
number of times you want to duplicate the character
specified in character argument
– character argument can be either a character literal
constant or a char memory location
An Introduction to Programming with C++, Sixth Edition
66
Figure 13-35 How to use the assign function
An Introduction to Programming with C++, Sixth Edition
67
Figure 13-36 Company name program
An Introduction to Programming with C++, Sixth Edition
68
Duplicating a Character within a
string Variable (cont’d.)
Figure 13-37 Sample run of the company name
program
An Introduction to Programming with C++, Sixth Edition
69
Concatenating Strings
• String concatenation refers to the process of
connecting (linking) strings together
• You concatenate strings using the concatenation
operator (+ sign)
An Introduction to Programming with C++, Sixth Edition
70
Figure 13-38 How to use the concatenation operator
An Introduction to Programming with C++, Sixth Edition
71
Concatenating Strings (cont’d.)
Figure 13-39 Partial company name program showing string concatenation
An Introduction to Programming with C++, Sixth Edition
72
Summary
• The string data type was added to the C++
language using the string class
• Memory locations whose data type is string are
initialized using string literal constants (0 or more
characters enclosed in double quotation marks)
• You can use the extraction operator to get a string
from the user at the keyboard if the string does not
contain a white-space character
An Introduction to Programming with C++, Sixth Edition
73
Summary (cont’d.)
• The getline function gets a string of characters
entered at the keyboard and stores them in a
string variable
• The string can contain any characters, including
white-space characters
• The getline function reads and stores characters
from the keyboard until it encounters a delimiter
character, which it consumes (discards)
• The default delimiter character is the newline
character
An Introduction to Programming with C++, Sixth Edition
74
Summary (cont’d.)
• The computer stores characters entered at the
keyboard in the cin object
• Both the extraction operator and the getline
function remove characters from cin
• The extraction operator leaves the newline
character in cin, while the getline function
consumes the newline character
• The ignore function reads and then consumes
characters entered at the keyboard
An Introduction to Programming with C++, Sixth Edition
75
Summary (cont’d.)
• The ignore function stops reading and consuming
characters when it consumes either a specified
number of characters or a delimiter character
• The default number of characters to consume is 1
• The assign, erase, insert, and replace
functions are self-contained statements that
change the value of a string variable
• The concatenation operator (+) is used to join (link)
strings together
An Introduction to Programming with C++, Sixth Edition
76
Lab 13-1: Stop and Analyze
• Study the code in Figure 13-40 and then answer
the questions
An Introduction to Programming with C++, Sixth Edition
77
Lab 13-2: Plan and Create
Figure 13-41 Problem specification for Lab 13-2
An Introduction to Programming with C++, Sixth Edition
78
Lab 13-3: Modify
• Make a copy of Lab 13-2 to modify
• Current version allows player 1 to enter only fiveletter words
• Modify the program so that player one can enter a
word of any length
• Test the program appropriately
An Introduction to Programming with C++, Sixth Edition
79
Lab 13-4: Desk-Check
• Desk-check the code in Figure 13-45
• What will the code display on the screen?
An Introduction to Programming with C++, Sixth Edition
80
Lab 13-5: Debug
• Run the program in the Lab13-5.cpp file
• Type Joe and press Enter
• Rather than displaying the letters J, o, and e on
three separate lines, the program displays Joe, oe,
and e
• Debug the program
An Introduction to Programming with C++, Sixth Edition
81