0% found this document useful (0 votes)
13 views45 pages

Sow C++ Cso Chapter 10 10e

Chapter 10 covers character testing and manipulation in C++ using the cctype and cstring header files, detailing functions for character classification, case conversion, and C-string handling. It explains the use of C-strings, their associated library functions, and numeric conversion functions, as well as introduces the C++ string class and its member functions for string manipulation. The chapter emphasizes the importance of bounds checking and proper input handling when working with strings in C++.

Uploaded by

David Cross
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views45 pages

Sow C++ Cso Chapter 10 10e

Chapter 10 covers character testing and manipulation in C++ using the cctype and cstring header files, detailing functions for character classification, case conversion, and C-string handling. It explains the use of C-strings, their associated library functions, and numeric conversion functions, as well as introduces the C++ string class and its member functions for string manipulation. The chapter emphasizes the importance of bounds checking and proper input handling when working with strings in C++.

Uploaded by

David Cross
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 45

Chapter 10:

Characters, C-Strings, and


More About the string Class

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.1
Character Testing

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Character Testing
• Requires cctype header file

FUNCTION MEANING
isalpha true if arg. is a letter, false otherwise
isalnum true if arg. is a letter or digit, false otherwise
isdigit true if arg. is a digit 0-9, false otherwise
islower true if arg. is lowercase letter, false otherwise
isprint true if arg. is a printable character, false otherwise
ispunct true if arg. is a punctuation character, false otherwise
isupper true if arg. is an uppercase letter, false otherwise
isspace true if arg. is a whitespace character, false otherwise

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
From Program 10-1

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.2
Character Case Conversion

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Character Case Conversion
• Require cctype header file
• Functions:
toupper: if char argument is lowercase letter, return
uppercase equivalent; otherwise, return input
unchanged
char ch1 = 'H';
char ch2 = 'e';
char ch3 = '!';
cout << toupper(ch1); // displays 'H'
cout << toupper(ch2); // displays 'E'
cout << toupper(ch3); // displays '!'
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Character Case Conversion
• Functions:
tolower: if char argument is uppercase letter, return
lowercase equivalent; otherwise, return input
unchanged
char ch1 = 'H';
char ch2 = 'e';
char ch3 = '!';
cout << tolower(ch1); // displays 'h'
cout << tolower(ch2); // displays 'e'
cout << tolower(ch3); // displays '!'

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.3
C-Strings

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-Strings

• C-string: sequence of characters stored in


adjacent memory locations and
terminated by NULL character
• String literal (string constant): sequence of
characters enclosed in double quotes " " :
"Hi there!"
H i t h e r e ! \0

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-Strings
• Array of chars can be used to define storage for
string:
const int SIZE = 20;
char city[SIZE];

• Leave room for NULL at end


• Can enter a value using cin or >>
• Input is whitespace-terminated
• No check to see if enough space
• For input containing whitespace, and to control
amount of input, use cin.getline()

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using C-Strings in Program 10-5

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using C-Strings in Program 10-5

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.4
Library Functions for Working with
C-Strings

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Library Functions for Working
with C-Strings
• Require the cstring header file

• Functions take one or more C-strings as


arguments. Can use:
• C-string name
• pointer to C-string
• literal string

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Library Functions for
Working with C-Strings
Functions:
• strlen(str): returns length of C-string str
char city[SIZE] = "Missoula";
cout << strlen(city); // prints 8
• strcat(str1, str2): appends str2 to the
end of str1
char location[SIZE] = "Missoula, ";
char state[3] = "MT";
strcat(location, state);
// location now has "Missoula, MT"

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Library Functions for
Working with C-Strings
Functions:
• strcpy(str1, str2): copies str2 to str1

const int SIZE = 20;


char fname[SIZE] = "Maureen", name[SIZE];
strcpy(name, fname);

Note: strcat and strcpy perform no bounds


checking to determine if there is enough space
in receiving character array to hold the string it
is being assigned.
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-string Inside a C-string
Function:
• strstr(str1, str2): finds the first
occurrence of str2 in str1. Returns a
pointer to match, or NULL if no match.
char river[] = "Wabash";
char word[] = "aba";
cout << strstr(state, word);
// displays "abash"

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.5
C-String/Numeric Conversion
Functions

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-String/Numeric Conversion
Functions
• Requires <cstdlib> header file
FUNCTION PARAMETER ACTION
atoi C-string converts C-string to an int value, returns
the value
atol C-string converts C-string to a long value, returns
the value
atof C-string converts C-string to a double value,
returns the value
itoa int,C-string, converts 1st int parameter to a C-string,
int stores it in 2nd parameter. 3rd parameter is
base of converted value

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-String/Numeric Conversion
Functions
int iNum;
long lNum;
double dNum;
char intChar[10];
iNum = atoi("1234"); // puts 1234 in iNum
lNum = atol("5678"); // puts 5678 in lNum
dNum = atof("35.7"); // puts 35.7 in dNum
itoa(iNum, intChar, 8); // puts the string
// "2322" (base 8 for 123410) in
intChar

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
C-String/Numeric Conversion
Functions - Notes
• if C-string contains non-digits, results are
undefined
• function may return result up to non-digit
• function may return 0

• itoa does no bounds checking – make


sure there is enough space to store the
result

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string to Number Conversion

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The to_string Function

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.6
Writing Your Own C-String
Handling Functions

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Writing Your Own C-String
Handling Functions
• Designing C-String Handling Functions
• can pass arrays or pointers to char arrays
• Can perform bounds checking to ensure
enough space for results
• Can anticipate unexpected user input

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
From Program 10-12

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
From Program 10-13

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
10.7
More About the C++ string
Class

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
The C++ string Class
• Special data type supports working with strings
• #include <string>
• Can define string variables in programs:
string firstName, lastName;
• Can receive values with assignment operator:
firstName = "George";
lastName = "Washington";
• Can be displayed via cout
cout << firstName << " " << lastName;

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using the string class in Program 10-15

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Input into a string Object

• Use cin >> to read an item into a string:


string firstName;
cout << "Enter your first name: ";
cin >> firstName;

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using cin and string objects in program 10-16

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Input into a string Object
• Use getline function to put a line of
input, possibly including spaces, into a
string:
string address;
cout << "Enter your address: ";
getline(cin,address);

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Comparison
• Can use relational operators directly to compare string
objects:
string str1 = "George",
str2 = "Georgia";
if (str1 < str2)
cout << str1 << " is less than "
<< str2;
• Comparison is performed similar to strcmp function.
Result is true or false

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Continued…

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Other Definitions of C++ strings

Definition Meaning
string name; defines an empty string object
string myname("Chris"); defines a string and initializes it
string yourname(myname); defines a string and initializes it
string aname(myname, 3); defines a string and initializes it with first 3
characters of myname

string verb(myname,3,2); defines a string and initializes it with 2


characters from myname starting at position
3

string noname('A', 5); defines string and initializes it to 5 'A's

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using auto To Define a string Object

• The following statement does not define a


string object:

auto str = "Hello World";

• This statement defines str as either


const char * or const char[12]

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Using auto To Define a string Object

• When using the auto key word to define a


string object, append the s suffix to the string
literal:

auto str = "Hello World"s;

• This statement defines str as a string object

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Operators
OPERATOR MEANING
>> extracts characters from stream up to whitespace, insert
into string
<< inserts string into stream
= assigns string on right to string object on left
+= appends string on right to end of contents on left
+ concatenates two strings
[] references character in string using array notation
>, >=, <, relational operators for string comparison. Return true or
<=, ==, != false

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Operators
string word1, phrase;
string word2 = " Dog";
cin >> word1; // user enters "Hot Tamale"
// word1 has "Hot"
phrase = word1 + word2; // phrase has
// "Hot Dog"
phrase += " on a bun";
for (int i = 0; i < 16; i++)
cout << phrase[i]; // displays
// "Hot Dog on a bun"

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Member Functions
• Are behind many overloaded operators
• Categories:
• assignment: assign, copy, data
• modification: append, clear, erase, insert,
replace, swap
• space management: capacity, empty,
length, resize, size
• substrings: find, front, back, at, substr
• comparison: compare
• See Table 10-8 for a list of functions.

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Member Functions

string word1, word2, phrase;


cin >> word1; // word1 is "Hot"
word2.assign(" Dog");
phrase.append(word1);
phrase.append(word2); // phrase has "Hot Dog"
phrase.append(" with mustard relish", 13);
// phrase has "Hot Dog with mustard"
phrase.insert(8, "on a bun ");
cout << phrase << endl; // displays
// "Hot Dog on a bun with mustard"

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.
string Member Functions in Program 10-21

Copyright © 2021, 2018, 2015, 2012, 2009 Pearson Education, Inc. All rights reserved.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy