Transcript C-strings

C++ PROGRAMMING:
PROGRAM DESIGN INCLUDING
DATA STRUCTURES, FIFTH EDITION
Chapter 10: Strings and string type
Objectives
2
•
•
•
Learn about C-strings
Examine the use of string functions to process
C-strings
Discover how to input data into—and output
data from—a C-string
string Type
3


To use the data type string, the program must
include the header file string
The statement:
string name = "William Jacob";
declares name to be a string variable and also
initializes name to "William Jacob"
The first character, 'W', is in position 0
 The second character, 'i', is in position 1
 name is capable of storing any size string

C++ Programming: Program Design Including Data Structures, Fifth Edition
string Type (cont'd.)
4

Binary operator + have been defined for the data
type string


+ performs the string concatenation operation
Example:
str1 = "Sunny";
str2 =
str1 + " Day";
stores "Sunny Day" into str2
Example 8-14: clear, empty, erase,
length, AND size FUNCTIONS
5
Please check the textbook:
chapter 8, page 462, Table 8-1 for
other string functions
// 0
// 1
strVar.erase(pos, n): deleting n chars from strVar starting at position pos.
Example 8-15: find FUNCTION
6
- strVar.find(str): return the index of the
first occurrence of str in strVar.
- strVar.find(str, pos): return the index of
the first occurrence at or after pos where str is
found in strVar.
// 4294967295
7
Example 8-16: insert AND
replace FUNCTIONS
- strVar.insert(pos, str): insert all the characters of str at index
pos into strVar.
- strVar.insert(pos, n, str): insert n occurrences of the
character str at index pos into strVar.
Example 8-17: substr FUNCTION
8
- strVar.substr(pos, len): returning a string
that is a substring of strVar starting at pos
Example 8-18: swap FUNCTION
9
- strVar.swap(str): swaps the contents of strVar and str.
C-Strings (Character Arrays)
10

Character array: an array whose components are of type
char

C-strings is an array of characters ending with the nullterminated ('\0')
Example:
 'A' is the character A
 "A" is the C-string A
 "A" represents two characters, 'A' and '\0‘



Char City1[] = “Dallas”; // C-string
Char City1[] = {‘D’, ‘a’, ‘l’, ‘l’, ‘a’, ‘s’};
//Char array
C-Strings (Character Arrays) (cont'd.)
11

Consider the statement
char name[16] = “Hello”;


Since C-strings are null terminated and name has
16 components, the largest string that it can store
has 15 characters
If you store a string of length, say 10 in name
first 11 components of name are used and the
last five are left unused
 The
C-Strings (Character Arrays) (cont'd.)
12
•
The statement
char name[16] = {‘J’,’o’,’h’,’n’,’\0’};
declares an array name of length 16 of type char and
stores the C-string "John" in it
•
The statement
char name[] = "John";
declares an array name of length 5 and stores the Cstring "John" in it.
char name[16] = {‘J’,’o’,’h’,’n’,’\0’};
=
char name[] = "John";
C-Strings (Character Arrays) (cont'd.)
13
String Comparison
14


C-strings are compared character by character
using the collating sequence of the system
If we are using the ASCII character set
 "Air"
< "Boat"
 "Air" < "An"
 "Bill" < "Billy"
 "Hello" < "hello"
String Comparison (cont’d.)
15
Example_9-6.cpp
Reading and Writing Strings
16
•
•
•
Most rules that apply to arrays apply to C-strings
as well
Aggregate operations, such as assignment and
comparison, are not allowed on arrays
The one place where C++ allows aggregate
operations on arrays is the input and output of Cstrings (that is, character arrays)
String Input
17



Assume we declare char name[31];
cin >> name; stores the next input Cstring into name
To read strings with blanks, use get:
cin.get(str, m+1);
the next m characters into str but the
newline character is not stored in str
 If the input string has fewer than m characters,
the reading stops at the newline character
 Stores
String Output
18

cout << name; outputs the content of
name on the screen
 <<
continues to write the contents of name until it
finds the null character
 If name does not contain the null character, then
we will see strange output
 << continues
to output data from memory adjacent to
name until '\0' is found
Class Activity
19

Consider the following statement:
cin.get.cpp
char str1[16], str2[16];
cin.get(str1,3);
cin.get(str2,4);
‘
cout << str1;
cout << str2;
What is the value of str1, str2 and final output
for the following input:
C++ Programming
Answer:
str1={‘C’,‘+’,‘\0’}
str2={‘+’,‘ ’,‘P’,‘\0’}
Final output:
C++ P

Class Activity
20


Consider the following statement:
char str1[16], str2[16], discard;
cin.get(str1,17);
cin.get(discard);
‘
cin.get(str2,4);
cout << str1;
cout << str2;
What is the value of str1, str2 and final
output for the following input:
Answer:
C++ Programming
str1={‘C’,‘+’,,‘+’,‘ ’,‘P’,‘r’,‘o’,
‘g’,‘r’,‘a’,‘m’,‘m’,‘i’,‘n’,‘g’,‘\0’}
C++ Programming
str2={‘C’,‘+’,‘+’,‘\0’}
Final output:
C++ ProgrammingC++
Arrays of Strings
21

Strings in C++ can be manipulated using either the
data type string or character arrays (C-strings)
Arrays of Strings and the string Type
22

To declare an array of 100 components of type
string:
string list[100];


Basic operations, such as assignment, comparison,
and input/output, can be performed on values of
the string type
The data in list can be processed just like any
one-dimensional array
23
Arrays of Strings and C-Strings
(Character Arrays)
Summary
24


In C++, C-strings are null terminated and are stored
in character arrays
Commonly used C-string manipulation functions
include:
 strcpy,
strcmp, and strlen