0% found this document useful (0 votes)
25 views26 pages

07 Strings

This document provides an outline of topics related to strings in C++. It discusses fundamentals of characters and strings like character constants, string literals, and reading strings from input. It also summarizes common string manipulation functions from the string handling library like strcpy(), strncpy(), strcmp(), and strlen() that can be used to copy, compare, and determine the length of strings. Examples are provided to demonstrate using strcpy() and strncpy() to copy strings and strlen() to determine string lengths.

Uploaded by

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

07 Strings

This document provides an outline of topics related to strings in C++. It discusses fundamentals of characters and strings like character constants, string literals, and reading strings from input. It also summarizes common string manipulation functions from the string handling library like strcpy(), strncpy(), strcmp(), and strlen() that can be used to copy, compare, and determine the length of strings. Examples are provided to demonstrate using strcpy() and strncpy() to copy strings and strlen() to determine string lengths.

Uploaded by

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

Outline

CSE131: Computer Programming

Strings
2

Strings
Outline

Introduction to Character and String Processing


1 Fundamentals of Characters and Strings
2 String Manipulation Functions of the String-
Handling Library
3

(1) Fundamentals of Characters and Strings

• Character constant
– Integer value represented as character in single quotes
– 'z' is integer value of z
• 122 in ASCII
• String
– Series of characters treated as single unit
– Can include letters, digits, special characters +, -, * ...
– String literal (string constants)
• Enclosed in double quotes, for example:
"I like C++"
– Array of characters, ends with null character '\0'
– String is constant pointer
• Pointer to string’s first character
– Like arrays
4

(1) Fundamentals of Characters and Strings

• String assignment
– Character array
• char color[] = "blue";
– Creates 5 element char array color
• last element is '\0'
– Variable of type char *
• char *colorPtr = "blue";
– Creates pointer colorPtr to letter b in string “blue”
• “blue” somewhere in memory
– Alternative for character array
• char color[] = { ‘b’, ‘l’, ‘u’, ‘e’, ‘\0’ };
5

(1) Fundamentals of Characters and Strings


• Reading strings
– Assign input to character array word[ 20 ]
cin >> word
• Reads characters until whitespace or EOF
• String could exceed array size
cin >> setw( 20 ) >> word;
• Reads 19 characters (space reserved for '\0')
6

(1) Fundamentals of Characters and Strings

• cin.getline
– Read line of text
– cin.getline( array, size, delimiter );
– Copies input into specified array until either
• One less than size is reached
• delimiter character is input
– Example
char sentence[ 80 ];
cin.getline( sentence, 80, '\n' );
7
(2) String Manipulation Functions of the String-
handling Library
• String handling library <cstring> provides
functions to
– Manipulate string data
– Compare strings
– Search strings for characters and other strings
– Tokenize strings (separate strings into logical pieces)
8
(2) String Manipulation Functions of the String-
handling Library
char *strcpy( char *s1, const Copies the string s2 into the character
char *s2 ); array s1. The value of s1 is returned.
char *strncpy( char *s1, const Copies at most n characters of the string s2
char *s2, size_t n ); into the character array s1. The value of s1 is
returned.
char *strcat( char *s1, const Appends the string s2 to the string s1. The
char *s2 ); first character of s2 overwrites the terminating
null character of s1. The value of s1 is
returned.
char *strncat( char *s1, const Appends at most n characters of string s2 to
char *s2, size_t n ); string s1. The first character of s2 overwrites
the terminating null character of s1. The value
of s1 is returned.

int strcmp( const char *s1, Compares the string s1 with the string s2. The
const char *s2 ); function returns a value of zero, less than zero
or greater than zero if s1 is equal to, less than
or greater than s2, respectively.
9
(2) String Manipulation Functions of the String-
handling Library
int strncmp( const char *s1, const Compares up to n characters of the string
char *s2, size_t n ); s1 with the string s2. The function returns
zero, less than zero or greater than zero if
s1 is equal to, less than or greater than s2,
respectively.
char *strtok( char *s1, const char A sequence of calls to strtok breaks
*s2 ); string s1 into “tokens”—logical pieces
such as words in a line of text—delimited
by characters contained in string s2. The
first call contains s1 as the first argument,
and subsequent calls to continue tokenizing
the same string contain NULL as the first
argument. A pointer to the current to­ken is
returned by each call. If there are no more
tokens when the function is called, NULL is
returned.

size_t strlen( const char *s ); Determines the length of string s. The


number of characters preceding the
terminating null character is returned.
10
(2) String Manipulation Functions of the String-
handling Library
• Determining string lengths
– size_t strlen( const char *s )
• Returns number of characters in string
– Terminating null character not included in length
11
1 // Fig. 32: fig05_32.cpp
2 // Using strlen.
Outline
3 #include <iostream>
4
5 using std::cout; <cstring> contains fig05_32.cpp
6 using std::endl; prototype for strlen. (1 of 1)
7
8 #include <cstring> // prototype for strlen
9
10 int main()
11 {
12 char *string1 = "abcdefghijklmnopqrstuvwxyz";
13 char *string2 = "four";
14 char *string3 = "Boston";
15
16 cout << "The length of \"" << string1
17 << "\" is " << strlen( string1 )
18 << "\nThe length of \"" << string2
Using strlen to determine
19 << "\" is " << strlen( string2 )
20 << "\nThe length of \"" << string3
length of strings.
21 << "\" is " << strlen( string3 ) << endl;
22
23 return 0; // indicates successful termination
24
25 } // end main
12
The length of "abcdefghijklmnopqrstuvwxyz" is 26
The length of "four" is 4
Outline
The length of "Boston" is 6

fig05_32.cpp
output (1 of 1)
13
(2) String Manipulation Functions of the String-
handling Library
• Copying strings
– char *strcpy( char *s1, const char *s2 )
• Copies second argument into first argument
– First argument must be large enough to store string and
terminating null character
– char *strncpy( char *s1, const char *s2,
size_t n )
• Specifies number of characters to be copied from string into
array
• Does not necessarily copy terminating null character
14
1 // Fig. 28: fig05_28.cpp
2 // Using strcpy and strncpy.
Outline
3 #include <iostream>
4
5 using std::cout; <cstring> contains fig05_28.cpp
6 using std::endl; prototypes for strcpy and (1 of 2)
7 strncpy.
8 #include <cstring> // prototypes for strcpy and strncpy
9
10 int main()
11 {
12 char x[] = "Happy Birthday to You";
13 char y[ 25 ]; Copy entire string in array x
14 char z[ 15 ]; into array y.
15
16 strcpy( y, x ); // copy contents of x into y
17
18 cout << "The string in array x is: " << x
19 << "\nThe string in array y is: " Copy first'\n';
<< y << 14 characters of
20 array x into array
21
Append
// copy first 14 characters of x into z
terminating nully. Note that
this does not write terminating
22 strncpy( z, x, 14 ); // does not character.
copy null character
23 z[ 14 ] = '\0';
null character.
// append '\0' to z's contents
24
25 cout << "The string in array z is: " << z << endl;
15
26
27 return 0; // indicates successful termination
Outline
28 String to copy.
29 } // end main Copied string using strcpy.
Copied first 14fig05_28.cpp
characters
The string in array x is: Happy Birthday to You using strncpy. (2 of 2)
The string in array y is: Happy Birthday to You
The string in array z is: Happy Birthday fig05_28.cpp
output (1 of 1)
16
(2) String Manipulation Functions of the String-
handling Library
• Concatenating strings
– char *strcat( char *s1, const char *s2 )
• Appends second argument to first argument
• First character of second argument replaces null character
terminating first argument
• Ensure first argument large enough to store concatenated result
and null character
– char *strncat( char *s1, const char *s2,
size_t n )
• Appends specified number of characters from second
argument to first argument
• Appends terminating null character to result
17
1 // Fig. 29: fig05_29.cpp
2 // Using strcat and strncat.
Outline
3 #include <iostream>
4
5 using std::cout; <cstring> contains fig05_29.cpp
6 using std::endl; prototypes for strcat and (1 of 2)
7 strncat.
8 #include <cstring> // prototypes for strcat and strncat
9
10 int main()
11 {
12 char s1[ 20 ] = "Happy ";
13 char s2[] = "New Year ";
14 char s3[ 40 ] = "";
15 Append s2 to s1.
16 cout << "s1 = " << s1 << "\ns2 = " << s2;
17
18 strcat( s1, s2 ); // concatenate s2 to s1
19
20 cout << "\n\nAfter strcat(s1, s2):\ns1 = " << s1
21 << "\ns2 = " << s2; Append first 6 characters of
22
s1 to s3.
23 // concatenate first 6 characters of s1 to s3
24 strncat( s3, s1, 6 ); // places '\0' after last character
25
18
26 cout << "\n\nAfter strncat(s3, s1, 6):\ns1 = " << s1
27 << "\ns3 = " << s3; Append s1 to s3. Outline
28
29 strcat( s3, s1 ); // concatenate s1 to s3
30 cout << "\n\nAfter strcat(s3, s1):\ns1 = " << s1
fig05_29.cpp
31 << "\ns3 = " << s3 << endl; (2 of 2)
32
33 return 0; // indicates successful termination fig05_29.cpp
34 output (1 of 1)
35 } // end main

s1 = Happy
s2 = New Year

After strcat(s1, s2):


s1 = Happy New Year
s2 = New Year

After strncat(s3, s1, 6):


s1 = Happy New Year
s3 = Happy

After strcat(s3, s1):


s1 = Happy New Year
s3 = Happy Happy New Year
19
(2) String Manipulation Functions of the String-
handling Library
• Comparing strings
– Characters represented as numeric codes
• Strings compared using numeric codes
– Character codes / character sets
• ASCII
– “American Standard Code for Information Interchage”
• EBCDIC
– “Extended Binary Coded Decimal Interchange Code”
20
(2) String Manipulation Functions of the String-
handling Library
• Comparing strings
– int strcmp( const char *s1, const char
*s2 )
• Compares character by character
• Returns
– Zero if strings equal
– Negative value if first string less than second string
– Positive value if first string greater than second string
– int strncmp( const char *s1,
const char *s2, size_t
n )
• Compares up to specified number of characters
• Stops comparing if reaches null character in one of arguments
21
1 // Fig. 30: fig05_30.cpp
2 // Using strcmp and strncmp.
Outline
3 #include <iostream>
4
5 using std::cout;
fig05_30.cpp
6 using std::endl; (1 of 2)
7
8 #include <iomanip>
9 <cstring> contains
10 using std::setw; prototypes for strcmp and
11 strncmp.
12 #include <cstring> // prototypes for strcmp and strncmp
13
14 int main()
15 {
16 char *s1 = "Happy New Year";
17 char *s2 = "Happy New Year";
18 char *s3 = "Happy Holidays";
19
20 cout << "s1 = " << s1 << "\ns2 = " << s2
Compare s1 and s2.
21 << "\ns3 = " << s3 << "\n\nstrcmp(s1,Compare
s2) = " s1 and s3.
22 << setw( 2 ) << strcmp( s1, s2 )
23 << "\nstrcmp(s1, s3) = " << setw( 2 ) Compare s3 and s1.
24 << strcmp( s1, s3 ) << "\nstrcmp(s3, s1) = "
25 << setw( 2 ) << strcmp( s3, s1 );
22
26 Compare up to 6 characters of
27 cout << Compare
"\n\nstrncmp(s1, s3, 6) = " << s1
setw( ) up to 7 characters of
and2s3.
Outline
28 << s1 and s3,
strncmp( s1, s3, 6 ) << "\nstrncmp(s1, s3. 7) = "
29 << setw( 2 ) << strncmp( s1, s3, 7 ) Compare up to 7 characters of
30 << "\nstrncmp(s3, s1, 7) = " s3 and s1. fig05_30.cpp
31 << setw( 2 ) << strncmp( s3, s1, 7 ) << endl; (2 of 2)
32
33 return 0; // indicates successful termination fig05_30.cpp
34 output (1 of 1)
35 } // end main

s1 = Happy New Year


s2 = Happy New Year
s3 = Happy Holidays

strcmp(s1, s2) = 0
strcmp(s1, s3) = 1
strcmp(s3, s1) = -1

strncmp(s1, s3, 6) = 0
strncmp(s1, s3, 7) = 1
strncmp(s3, s1, 7) = -1
23
(2) String Manipulation Functions of the String-
handling Library
• Tokenizing
– Breaking strings into tokens, separated by delimiting
characters
– Tokens usually logical units, such as words (separated by
spaces)
– "This is my string" has 4 word tokens (separated
by spaces)
– char *strtok( char *s1, const char *s2 )
• Multiple calls required
– First call contains two arguments, string to be tokenized
and string containing delimiting characters
• Finds next delimiting character and replaces with null
character
– Subsequent calls continue tokenizing
• Call with first argument NULL
24
1 // Fig. 31: fig05_31.cpp
2 // Using strtok.
Outline
3 #include <iostream>
4
5 using std::cout; <cstring> contains fig05_31.cpp
6 using std::endl; prototype for strtok. (1 of 2)
7
8 #include <cstring> // prototype for strtok
9
10 int main()
11 {
12 char sentence[] = "This is a sentence with 7 tokens";
13 char *tokenPtr;
14
15 cout << "The string to be tokenized is:\n" << sentence
16 First call to strtok begins
<< "\n\nThe tokens are:\n\n";
17 tokenization.
18 // begin tokenization of sentence
19 tokenPtr = strtok( sentence, " " );
20
Outline

25
21 // continue tokenizing sentence until tokenPtr becomes NULL
22 while ( tokenPtr != NULL ) {
23 cout << tokenPtr << '\n';
24 tokenPtr = strtok( NULL, " " ); // get next token
25
26 } // end while
27
28 cout << "\nAfter strtok, sentence = " << sentence << endl;
29
30 return 0; // indicates successful termination fig05_31.cpp
31
(2 of 2)
32 } // end main

Subsequent calls to strtok


with NULL as first argument
to indicate continuation.
26
The string to be tokenized is:
This is a sentence with 7 tokens
Outline

The tokens are:


fig05_31.cpp
This output (1 of 1)
is
a
sentence
with
7
tokens

After strtok, sentence = This

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