SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
1
The string Class
• Definition of Strings
• How to declare strings in C++: the string class
• Operations on strings
• Concatenation, comparison operators, and [ ]
• Functions of the string class
• length, size, empty,
• insert, substr, replace, erase, clear, find
• Useful char functions in the C library <ctype.h>
2
Definition of Strings
• Generally speaking, a string is a sequence of characters
• Examples: “hello”, “high school”, “H2O”.
• Typical desirable operations on strings are:
• Concatenation: “high”+“school”=“highschool”
• Comparisons: “high”<“school” // alphabetical
• Finding/retrieving/modifying/deleting/inserting substrings in a given string
3
Strings in C
• In C, a string can be a specially terminated char array or
char pointer
• a char array, such as char str[ ]=“high”;
• a char pointer, such as char *p = “high”;
• If a char array, the last element of the array must be equal
to ‘0’, signaling the end
• For example, the above str[] is really of length 5:
str[0]=‘h’ str[1]=‘i’ str[2]=‘g’ str[3]=‘h’ str[4]=‘0’
• The same array could’ve been declared as:
• char str[5] = {‘h’,’i’, ‘g’,’h’,’0’};
• If you write char str[4] = {‘h’,’i’, ‘g’,’h’};, then str is an array
of chars but not a string.
• In char *p=“high”; the system allocates memory of 5
characters long, stores “high” in the first 4, and ‘0’ in the
5th.
4
The string Class in C++
• C++ has a <string> library
• Include it in your programs when you wish to use strings: #include
<string>
• In this library, a class string is defined and implemented
• It is very convenient and makes string processing easier than in C
5
Declaration of strings
• The following instructions are all equivalent. They declare x to be an
object of type string, and assign the string “high school” to it:
• string x(“high school”);
• string x= “high school”;
• string x; x=“high school”;
6
Operations on strings
(Concatenation)
• Let x and y be two strings
• To concatenate x and y, write: x+y
string x= “high”;
string y= “school”;
string z;
z=x+y;
cout<<“z=“<<z<<endl;
z =z+“ was fun”;
cout<<“z=“<<z<<endl;
Output:
z=highschool
z= highschool was fun
7
Concatenation of Mixed-Style Strings
• In where s is of type string,
• u can be
A string object, or
a C-style string (a char array or a char pointer),
a C-style char
or a double-quoted string,
or a single-quoted character.
• Same with v and w.
• At least u or v or w must be a string object
s=u+v+w;
8
Example of Mixed-Style Concat
string x= “high”;
char y[]= “school”;
char z[]= {‘w’,’a’,’s’,’0’};
char *p = “good”;
string s= x+y+’ ‘+z+” very”+” “+p+’!’;
cout<<“s=“<<s<<endl;
cout<<“s=“+s<<endl;
Output:
s=highschool was very good!
s=highschool was very good!
9
The concat-assign Operator +=
• Assume x is a string object.
• The statement
x += y;
is equivalent to
x=x+y;
where y can be a string object, a C-style string variable, a char
variable, a double-quoted string, or a single-quoted char.
10
Comparison Operators for string Objects
• We can compare two strings x and y using the following operators: ==,
!=, <, <=, >, >=
• The comparison is alphabetical
• The outcome of each comparison is: true or false
• The comparison works as long as at least x or y is a string object. The
other string can be a string object, a C-style string variable, or a
double-quoted string.
11
Example of String Comparisons
string x= “high”;
char y[]= “school”;
char *p = “good”;
If (x<y)
cout<<“x<y”<<endl;
If (x<“tree”)
cout<<“x<tree”<,endl;
If (“low” != x)
cout<<“low != x”<<endl;
if( (p>x)
cout<<“p>x”<<endl;
Else
cout<<“p<=x”<<endl;
Output:
x<y
x<tree
low != x
p>x
12
The Index Operator []
• If x is a string object, and you wish to obtain the value of the k-th
character in the string, you write: x[k];
• This feature makes string objects appear like arrays of chars.
string x= “high”;
char c=x[0]; // c is ‘h’
c=x[1]; // c is ‘i’
c=x[2]; // c is g
13
Getting a string Object Length & Checking for
Emptiness
• To obtain the length of a string object x, call the method length() or
size():
• To check of x is empty (that is, has no characters in it):
int len=x.length( );
--or--
int len=x.size( );
bool x.empty();
14
Obtaining Substrings of Strings
• Logically, a substring of a string x is a subsequence
of consecutive characters in x
• For example, “rod” is a substring of “product”
• If x is a string object, and we want the substring
that begins at position pos and has len characters
(where pos and len are of type int), write:
• The default value of len is x.length( )
• The default value for pos is 0
string y = x.substr(pos,len);
string y = x.substr(pos);//x[pos..end-1]
15
Inserting a String Inside Another
• Suppose x is a string object, and let y be another string to be inserted
at position pos of the string of x
• To insert y, do:
• The argument y can be: a string object, a C-style string variable, or a
double-quoted string x.insert(pos,y);
16
Replacing a Substring by Another
• Suppose x is a string object, and suppose you want to replace the
characters in the range [pos,pos+len) in x by a string y.
• To do so, write:
• The argument y can be: a string object, a C-style string variable, or a
double-quoted string x.replace(pos,len,y);
CS 103 17
Deleting (Erasing) a Substring of a string Object
• Suppose x is a string object, and suppose you want to delete/erase
the characters in the range [pos,pos+len) in x.
• To do so, write:
• The default value of len is the x.length( )
• The default value for pos is 0
• To erase the whole string of x, do:
x.erase(pos,len);
x.clear( );
x.erase(pos); // erases x[pos..end-1]
18
Searching for (and Finding) Patterns in Strings
• Suppose x is a string object, and suppose you want
to search for a string y in x.
• To do so, write:
• This method returns the starting index of the
leftmost occurrence of y in x, if any occurrence
exits; otherwise, the method returns the length of
x.
• To search starting from a position pos, do
int startLoc = x.find(y);
int startLoc = x.find(y, pos);
19
Searching for Patterns (Contd.)
• To search for the rightmost occurrence of y in x, do
• In all the versions of find and rfind, the argument y can be a string
object, a C-style string variable, double-quoted string, a char variable,
or a single-quoted char.
startLoc = x.rfind(y); // or
startLoc = x.rfind(y, pos);
20
An Example
string x=“FROM:ayoussef@gwu.edu”;
int colonPos=x.find(‘:’);
string prefix=x.substr(0,colonPos); //=FROM
string suffix = x. substr(colonPos+1);
cout<<“-This message is from ”<<suffix<<endl;
Output:
-This message is from ayoussef@gwu.edu
21
Another Example
#include <fstream>
// this code segment reads lines from an input file and
// appends them to a string object called body. It does
// so until it sees a line equal to ##########
ifstream in(“inputFileName.txt”);
string body; char line[1000];
while(in.getline(line,1000)){ //puts in line the next line w/o n
string lineString (line);
if (lineString != "##########")
body += lineString +'n';// appends line to body
else
break; // exits the while loop
}
22
Trimming Leading & Trailing Spaces
// this function removes leading and trailing spaces from x
void trim (string& x){
int k = 0; // k will procced to the first non-blank char
while(k<x.size() &&(x[k]==' ' || x[k]=='t' || x[k]=='n'))
k++;
x. erase(0,k);
int s=x.size();
// s will move backward to the rightmost non-blank char
while(s>0 &&(x[s-1]==' ' || x[s-1]=='t' || x[s-1]=='n'))
s--;
x.erase(s);
}
23
What if You Want to Use C-Style Strings
• You can!
• C has a library <strings.h> which provides several string processing
functions
• Some of the more commonly used functions in that library are
presented in the next two slides
• In those functions, most of the arguments are of type char *str. That
can be replaced by char str[];
24
C Library <strings.h> for String Operations
• char *strcpy(char *dst, char *src);
• Copies the string src to string dest
• char *strncpy(char *dst, char *src, int n);
• Copies the first n characters of src to dest
• char * strcat(*dst, char *src);
• Concatenate src to the end of dst.
• char * strcat(*dst, char *src, int n);
• Concatenate first n chars of src to end of dst.
25
• int strcmp(char *str1, char *str2);
• Returns 0 if str1=str2, negative if str1<str2, positive if str1>str2
• int strncmp(char *str1, char *str2, int n);
• Same as strcmp except it considers the first n chars of each string
• int strlen(char *str); // returns the length of str
• char * strchr(char *str, int c);
• Returns a char pointer to the 1st occurrence of character c in str,
or NULL otherwise.
• char * strstr(char *str, char *pat);
• Returns a char pointer to the 1st occurrence of string pat in str, or
NULL otherwise.
• Plus some other commands
• Remarks:
• in strcpy, strncpy, strcat, and strncat, make sure that the dst string has
enough space to accommodate the string copied or cancatenated to it
• If the strings are arrays, also make sure that the array dst is large enough
to to accommodate the string copied or cancatenated to it
26
Correspondence between the C library and the C++
string Class
C Library Functions C++ string operators/methods
strcpy = (the assignment operator)
strcat += (assign+concat operator)
strcmp = =, !=, <, >, <=, >=
strchr, strstr
strrchr
.find( ) method
.rfind( ) method
strlen .size( ) or .length( ) methods
27
Char Functions in C (and C++)
• The <ctype.h> library in C provides useful functions for single char
variables
• The next slide gives the most common char functions.
• Although the input argument appears to be of type int, it is actually a
char.
28
• int isalnum(int c); //non-zero iff c is alphanumeric
• int isalpha(int c); //non-zero iff c is alphabetic
• int isdigit(int c); //non-zero iff c a digit: 0 to 9
• int islower(int c); //non-zero iff c is lower case
• int ispunct(int c); //non-zero iff c is punctuation
• int isspace(int c); //non-zero iff c is a space char
• int isupper(int c); // non-zero iff c is upper case
• int isxdigit(int c); //non-zero iff c is hexadecimal
• int tolower(int c); //returns c in lower case
• int toupper(int c); //returns c in upper case
29
An example of Using char Functions
//PRECONDITION: str a string object
//POSTCONDITION: every lower-case alphabetical letter
//in str is replaced by its upper-case counterpart
void toupper(string& str){
for(int i=0;i<str.size();i++){
char c=str[i];
if (islower(c)){
char C = toupper(c);
string strC; strC=C;
str.replace(i,1,strC);
}
}
}

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Function overloading(c++)
Function overloading(c++)Function overloading(c++)
Function overloading(c++)
 
C++ presentation
C++ presentationC++ presentation
C++ presentation
 
Class and object in C++
Class and object in C++Class and object in C++
Class and object in C++
 
Storage class in c
Storage class in cStorage class in c
Storage class in c
 
Pure virtual function and abstract class
Pure virtual function and abstract classPure virtual function and abstract class
Pure virtual function and abstract class
 
String functions in C
String functions in CString functions in C
String functions in C
 
Constructor and Destructor
Constructor and DestructorConstructor and Destructor
Constructor and Destructor
 
Static Data Members and Member Functions
Static Data Members and Member FunctionsStatic Data Members and Member Functions
Static Data Members and Member Functions
 
Python Data-Types
Python Data-TypesPython Data-Types
Python Data-Types
 
File in C language
File in C languageFile in C language
File in C language
 
Datatypes in python
Datatypes in pythonDatatypes in python
Datatypes in python
 
Strings
StringsStrings
Strings
 
String Handling in c++
String Handling in c++String Handling in c++
String Handling in c++
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Control Structures
Control StructuresControl Structures
Control Structures
 
Programming in c Arrays
Programming in c ArraysProgramming in c Arrays
Programming in c Arrays
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
 
Operators in Python
Operators in PythonOperators in Python
Operators in Python
 
Functions in c
Functions in cFunctions in c
Functions in c
 
Data types in c++
Data types in c++Data types in c++
Data types in c++
 

Ähnlich wie The string class

Strinng Classes in c++
Strinng Classes in c++Strinng Classes in c++
Strinng Classes in c++Vikash Dhal
 
Cs1123 9 strings
Cs1123 9 stringsCs1123 9 strings
Cs1123 9 stringsTAlha MAlik
 
Presentation more c_programmingcharacter_and_string_handling_
Presentation more c_programmingcharacter_and_string_handling_Presentation more c_programmingcharacter_and_string_handling_
Presentation more c_programmingcharacter_and_string_handling_KarthicaMarasamy
 
String in programming language in c or c++
String in programming language in c or c++String in programming language in c or c++
String in programming language in c or c++Azeemaj101
 
Handling of character strings C programming
Handling of character strings C programmingHandling of character strings C programming
Handling of character strings C programmingAppili Vamsi Krishna
 
Type header file in c++ and its function
Type header file in c++ and its functionType header file in c++ and its function
Type header file in c++ and its functionFrankie Jones
 
fundamentals of c programming_String.pptx
fundamentals of c programming_String.pptxfundamentals of c programming_String.pptx
fundamentals of c programming_String.pptxJStalinAsstProfessor
 
CS101- Introduction to Computing- Lecture 38
CS101- Introduction to Computing- Lecture 38CS101- Introduction to Computing- Lecture 38
CS101- Introduction to Computing- Lecture 38Bilal Ahmed
 
C++ process new
C++ process newC++ process new
C++ process new敬倫 林
 
introduction to strings in c programming
introduction to strings in c programmingintroduction to strings in c programming
introduction to strings in c programmingmikeymanjiro2090
 
0-Slot21-22-Strings.pdf
0-Slot21-22-Strings.pdf0-Slot21-22-Strings.pdf
0-Slot21-22-Strings.pdfssusere19c741
 
Finding similar items in high dimensional spaces locality sensitive hashing
Finding similar items in high dimensional spaces  locality sensitive hashingFinding similar items in high dimensional spaces  locality sensitive hashing
Finding similar items in high dimensional spaces locality sensitive hashingDmitriy Selivanov
 
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...Mail.ru Group
 
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptx
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptxINDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptx
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptxAbhimanyuChaure
 

Ähnlich wie The string class (20)

Strinng Classes in c++
Strinng Classes in c++Strinng Classes in c++
Strinng Classes in c++
 
lecture5.ppt
lecture5.pptlecture5.ppt
lecture5.ppt
 
Cs1123 9 strings
Cs1123 9 stringsCs1123 9 strings
Cs1123 9 strings
 
Presentation more c_programmingcharacter_and_string_handling_
Presentation more c_programmingcharacter_and_string_handling_Presentation more c_programmingcharacter_and_string_handling_
Presentation more c_programmingcharacter_and_string_handling_
 
String in programming language in c or c++
String in programming language in c or c++String in programming language in c or c++
String in programming language in c or c++
 
Python data handling
Python data handlingPython data handling
Python data handling
 
Handling of character strings C programming
Handling of character strings C programmingHandling of character strings C programming
Handling of character strings C programming
 
Type header file in c++ and its function
Type header file in c++ and its functionType header file in c++ and its function
Type header file in c++ and its function
 
fundamentals of c programming_String.pptx
fundamentals of c programming_String.pptxfundamentals of c programming_String.pptx
fundamentals of c programming_String.pptx
 
Java string handling
Java string handlingJava string handling
Java string handling
 
CS101- Introduction to Computing- Lecture 38
CS101- Introduction to Computing- Lecture 38CS101- Introduction to Computing- Lecture 38
CS101- Introduction to Computing- Lecture 38
 
C++ process new
C++ process newC++ process new
C++ process new
 
introduction to strings in c programming
introduction to strings in c programmingintroduction to strings in c programming
introduction to strings in c programming
 
0-Slot21-22-Strings.pdf
0-Slot21-22-Strings.pdf0-Slot21-22-Strings.pdf
0-Slot21-22-Strings.pdf
 
Arrays & Strings.pptx
Arrays & Strings.pptxArrays & Strings.pptx
Arrays & Strings.pptx
 
Finding similar items in high dimensional spaces locality sensitive hashing
Finding similar items in high dimensional spaces  locality sensitive hashingFinding similar items in high dimensional spaces  locality sensitive hashing
Finding similar items in high dimensional spaces locality sensitive hashing
 
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
Дмитрий Селиванов, OK.RU. Finding Similar Items in high-dimensional spaces: L...
 
Unitii string
Unitii stringUnitii string
Unitii string
 
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptx
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptxINDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptx
INDIAN INSTITUTE OF TECHNOLOGY KANPURESC 111M Lec13.pptx
 
Team 1
Team 1Team 1
Team 1
 

Mehr von Syed Zaid Irshad

Mehr von Syed Zaid Irshad (20)

Operating System.pdf
Operating System.pdfOperating System.pdf
Operating System.pdf
 
DBMS_Lab_Manual_&_Solution
DBMS_Lab_Manual_&_SolutionDBMS_Lab_Manual_&_Solution
DBMS_Lab_Manual_&_Solution
 
Data Structure and Algorithms.pptx
Data Structure and Algorithms.pptxData Structure and Algorithms.pptx
Data Structure and Algorithms.pptx
 
Design and Analysis of Algorithms.pptx
Design and Analysis of Algorithms.pptxDesign and Analysis of Algorithms.pptx
Design and Analysis of Algorithms.pptx
 
Professional Issues in Computing
Professional Issues in ComputingProfessional Issues in Computing
Professional Issues in Computing
 
Reduce course notes class xi
Reduce course notes class xiReduce course notes class xi
Reduce course notes class xi
 
Reduce course notes class xii
Reduce course notes class xiiReduce course notes class xii
Reduce course notes class xii
 
Introduction to Database
Introduction to DatabaseIntroduction to Database
Introduction to Database
 
C Language
C LanguageC Language
C Language
 
Flowchart
FlowchartFlowchart
Flowchart
 
Algorithm Pseudo
Algorithm PseudoAlgorithm Pseudo
Algorithm Pseudo
 
Computer Programming
Computer ProgrammingComputer Programming
Computer Programming
 
ICS 2nd Year Book Introduction
ICS 2nd Year Book IntroductionICS 2nd Year Book Introduction
ICS 2nd Year Book Introduction
 
Security, Copyright and the Law
Security, Copyright and the LawSecurity, Copyright and the Law
Security, Copyright and the Law
 
Computer Architecture
Computer ArchitectureComputer Architecture
Computer Architecture
 
Data Communication
Data CommunicationData Communication
Data Communication
 
Information Networks
Information NetworksInformation Networks
Information Networks
 
Basic Concept of Information Technology
Basic Concept of Information TechnologyBasic Concept of Information Technology
Basic Concept of Information Technology
 
Introduction to ICS 1st Year Book
Introduction to ICS 1st Year BookIntroduction to ICS 1st Year Book
Introduction to ICS 1st Year Book
 
Using the set operators
Using the set operatorsUsing the set operators
Using the set operators
 

Kürzlich hochgeladen

Dev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingDev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingMarian Marinov
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...amrabdallah9
 
ChatGPT-and-Generative-AI-Landscape Working of generative ai search
ChatGPT-and-Generative-AI-Landscape Working of generative ai searchChatGPT-and-Generative-AI-Landscape Working of generative ai search
ChatGPT-and-Generative-AI-Landscape Working of generative ai searchrohitcse52
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...sahb78428
 
Multicomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfMulticomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfGiovanaGhasary1
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical SensorTanvir Moin
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxKISHAN KUMAR
 
me3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Ame3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Akarthi keyan
 
EPE3163_Hydro power stations_Unit2_Lect2.pptx
EPE3163_Hydro power stations_Unit2_Lect2.pptxEPE3163_Hydro power stations_Unit2_Lect2.pptx
EPE3163_Hydro power stations_Unit2_Lect2.pptxJoseeMusabyimana
 
solar wireless electric vechicle charging system
solar wireless electric vechicle charging systemsolar wireless electric vechicle charging system
solar wireless electric vechicle charging systemgokuldongala
 
Nodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxNodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxwendy cai
 
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Apollo Techno Industries Pvt Ltd
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxjasonsedano2
 
Gender Bias in Engineer, Honors 203 Project
Gender Bias in Engineer, Honors 203 ProjectGender Bias in Engineer, Honors 203 Project
Gender Bias in Engineer, Honors 203 Projectreemakb03
 

Kürzlich hochgeladen (20)

Dev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & LoggingDev.bg DevOps March 2024 Monitoring & Logging
Dev.bg DevOps March 2024 Monitoring & Logging
 
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
Strategies of Urban Morphologyfor Improving Outdoor Thermal Comfort and Susta...
 
ChatGPT-and-Generative-AI-Landscape Working of generative ai search
ChatGPT-and-Generative-AI-Landscape Working of generative ai searchChatGPT-and-Generative-AI-Landscape Working of generative ai search
ChatGPT-and-Generative-AI-Landscape Working of generative ai search
 
Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...
 
Multicomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdfMulticomponent Spiral Wound Membrane Separation Model.pdf
Multicomponent Spiral Wound Membrane Separation Model.pdf
 
Lecture 2 .pdf
Lecture 2                           .pdfLecture 2                           .pdf
Lecture 2 .pdf
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical Sensor
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptx
 
Présentation IIRB 2024 Chloe Dufrane.pdf
Présentation IIRB 2024 Chloe Dufrane.pdfPrésentation IIRB 2024 Chloe Dufrane.pdf
Présentation IIRB 2024 Chloe Dufrane.pdf
 
me3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part Ame3493 manufacturing technology unit 1 Part A
me3493 manufacturing technology unit 1 Part A
 
EPE3163_Hydro power stations_Unit2_Lect2.pptx
EPE3163_Hydro power stations_Unit2_Lect2.pptxEPE3163_Hydro power stations_Unit2_Lect2.pptx
EPE3163_Hydro power stations_Unit2_Lect2.pptx
 
Lecture 2 .pptx
Lecture 2                            .pptxLecture 2                            .pptx
Lecture 2 .pptx
 
solar wireless electric vechicle charging system
solar wireless electric vechicle charging systemsolar wireless electric vechicle charging system
solar wireless electric vechicle charging system
 
Nodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxNodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptx
 
Présentation IIRB 2024 Marine Cordonnier.pdf
Présentation IIRB 2024 Marine Cordonnier.pdfPrésentation IIRB 2024 Marine Cordonnier.pdf
Présentation IIRB 2024 Marine Cordonnier.pdf
 
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptx
 
計劃趕得上變化
計劃趕得上變化計劃趕得上變化
計劃趕得上變化
 
Litature Review: Research Paper work for Engineering
Litature Review: Research Paper work for EngineeringLitature Review: Research Paper work for Engineering
Litature Review: Research Paper work for Engineering
 
Gender Bias in Engineer, Honors 203 Project
Gender Bias in Engineer, Honors 203 ProjectGender Bias in Engineer, Honors 203 Project
Gender Bias in Engineer, Honors 203 Project
 

The string class

  • 1. 1 The string Class • Definition of Strings • How to declare strings in C++: the string class • Operations on strings • Concatenation, comparison operators, and [ ] • Functions of the string class • length, size, empty, • insert, substr, replace, erase, clear, find • Useful char functions in the C library <ctype.h>
  • 2. 2 Definition of Strings • Generally speaking, a string is a sequence of characters • Examples: “hello”, “high school”, “H2O”. • Typical desirable operations on strings are: • Concatenation: “high”+“school”=“highschool” • Comparisons: “high”<“school” // alphabetical • Finding/retrieving/modifying/deleting/inserting substrings in a given string
  • 3. 3 Strings in C • In C, a string can be a specially terminated char array or char pointer • a char array, such as char str[ ]=“high”; • a char pointer, such as char *p = “high”; • If a char array, the last element of the array must be equal to ‘0’, signaling the end • For example, the above str[] is really of length 5: str[0]=‘h’ str[1]=‘i’ str[2]=‘g’ str[3]=‘h’ str[4]=‘0’ • The same array could’ve been declared as: • char str[5] = {‘h’,’i’, ‘g’,’h’,’0’}; • If you write char str[4] = {‘h’,’i’, ‘g’,’h’};, then str is an array of chars but not a string. • In char *p=“high”; the system allocates memory of 5 characters long, stores “high” in the first 4, and ‘0’ in the 5th.
  • 4. 4 The string Class in C++ • C++ has a <string> library • Include it in your programs when you wish to use strings: #include <string> • In this library, a class string is defined and implemented • It is very convenient and makes string processing easier than in C
  • 5. 5 Declaration of strings • The following instructions are all equivalent. They declare x to be an object of type string, and assign the string “high school” to it: • string x(“high school”); • string x= “high school”; • string x; x=“high school”;
  • 6. 6 Operations on strings (Concatenation) • Let x and y be two strings • To concatenate x and y, write: x+y string x= “high”; string y= “school”; string z; z=x+y; cout<<“z=“<<z<<endl; z =z+“ was fun”; cout<<“z=“<<z<<endl; Output: z=highschool z= highschool was fun
  • 7. 7 Concatenation of Mixed-Style Strings • In where s is of type string, • u can be A string object, or a C-style string (a char array or a char pointer), a C-style char or a double-quoted string, or a single-quoted character. • Same with v and w. • At least u or v or w must be a string object s=u+v+w;
  • 8. 8 Example of Mixed-Style Concat string x= “high”; char y[]= “school”; char z[]= {‘w’,’a’,’s’,’0’}; char *p = “good”; string s= x+y+’ ‘+z+” very”+” “+p+’!’; cout<<“s=“<<s<<endl; cout<<“s=“+s<<endl; Output: s=highschool was very good! s=highschool was very good!
  • 9. 9 The concat-assign Operator += • Assume x is a string object. • The statement x += y; is equivalent to x=x+y; where y can be a string object, a C-style string variable, a char variable, a double-quoted string, or a single-quoted char.
  • 10. 10 Comparison Operators for string Objects • We can compare two strings x and y using the following operators: ==, !=, <, <=, >, >= • The comparison is alphabetical • The outcome of each comparison is: true or false • The comparison works as long as at least x or y is a string object. The other string can be a string object, a C-style string variable, or a double-quoted string.
  • 11. 11 Example of String Comparisons string x= “high”; char y[]= “school”; char *p = “good”; If (x<y) cout<<“x<y”<<endl; If (x<“tree”) cout<<“x<tree”<,endl; If (“low” != x) cout<<“low != x”<<endl; if( (p>x) cout<<“p>x”<<endl; Else cout<<“p<=x”<<endl; Output: x<y x<tree low != x p>x
  • 12. 12 The Index Operator [] • If x is a string object, and you wish to obtain the value of the k-th character in the string, you write: x[k]; • This feature makes string objects appear like arrays of chars. string x= “high”; char c=x[0]; // c is ‘h’ c=x[1]; // c is ‘i’ c=x[2]; // c is g
  • 13. 13 Getting a string Object Length & Checking for Emptiness • To obtain the length of a string object x, call the method length() or size(): • To check of x is empty (that is, has no characters in it): int len=x.length( ); --or-- int len=x.size( ); bool x.empty();
  • 14. 14 Obtaining Substrings of Strings • Logically, a substring of a string x is a subsequence of consecutive characters in x • For example, “rod” is a substring of “product” • If x is a string object, and we want the substring that begins at position pos and has len characters (where pos and len are of type int), write: • The default value of len is x.length( ) • The default value for pos is 0 string y = x.substr(pos,len); string y = x.substr(pos);//x[pos..end-1]
  • 15. 15 Inserting a String Inside Another • Suppose x is a string object, and let y be another string to be inserted at position pos of the string of x • To insert y, do: • The argument y can be: a string object, a C-style string variable, or a double-quoted string x.insert(pos,y);
  • 16. 16 Replacing a Substring by Another • Suppose x is a string object, and suppose you want to replace the characters in the range [pos,pos+len) in x by a string y. • To do so, write: • The argument y can be: a string object, a C-style string variable, or a double-quoted string x.replace(pos,len,y);
  • 17. CS 103 17 Deleting (Erasing) a Substring of a string Object • Suppose x is a string object, and suppose you want to delete/erase the characters in the range [pos,pos+len) in x. • To do so, write: • The default value of len is the x.length( ) • The default value for pos is 0 • To erase the whole string of x, do: x.erase(pos,len); x.clear( ); x.erase(pos); // erases x[pos..end-1]
  • 18. 18 Searching for (and Finding) Patterns in Strings • Suppose x is a string object, and suppose you want to search for a string y in x. • To do so, write: • This method returns the starting index of the leftmost occurrence of y in x, if any occurrence exits; otherwise, the method returns the length of x. • To search starting from a position pos, do int startLoc = x.find(y); int startLoc = x.find(y, pos);
  • 19. 19 Searching for Patterns (Contd.) • To search for the rightmost occurrence of y in x, do • In all the versions of find and rfind, the argument y can be a string object, a C-style string variable, double-quoted string, a char variable, or a single-quoted char. startLoc = x.rfind(y); // or startLoc = x.rfind(y, pos);
  • 20. 20 An Example string x=“FROM:ayoussef@gwu.edu”; int colonPos=x.find(‘:’); string prefix=x.substr(0,colonPos); //=FROM string suffix = x. substr(colonPos+1); cout<<“-This message is from ”<<suffix<<endl; Output: -This message is from ayoussef@gwu.edu
  • 21. 21 Another Example #include <fstream> // this code segment reads lines from an input file and // appends them to a string object called body. It does // so until it sees a line equal to ########## ifstream in(“inputFileName.txt”); string body; char line[1000]; while(in.getline(line,1000)){ //puts in line the next line w/o n string lineString (line); if (lineString != "##########") body += lineString +'n';// appends line to body else break; // exits the while loop }
  • 22. 22 Trimming Leading & Trailing Spaces // this function removes leading and trailing spaces from x void trim (string& x){ int k = 0; // k will procced to the first non-blank char while(k<x.size() &&(x[k]==' ' || x[k]=='t' || x[k]=='n')) k++; x. erase(0,k); int s=x.size(); // s will move backward to the rightmost non-blank char while(s>0 &&(x[s-1]==' ' || x[s-1]=='t' || x[s-1]=='n')) s--; x.erase(s); }
  • 23. 23 What if You Want to Use C-Style Strings • You can! • C has a library <strings.h> which provides several string processing functions • Some of the more commonly used functions in that library are presented in the next two slides • In those functions, most of the arguments are of type char *str. That can be replaced by char str[];
  • 24. 24 C Library <strings.h> for String Operations • char *strcpy(char *dst, char *src); • Copies the string src to string dest • char *strncpy(char *dst, char *src, int n); • Copies the first n characters of src to dest • char * strcat(*dst, char *src); • Concatenate src to the end of dst. • char * strcat(*dst, char *src, int n); • Concatenate first n chars of src to end of dst.
  • 25. 25 • int strcmp(char *str1, char *str2); • Returns 0 if str1=str2, negative if str1<str2, positive if str1>str2 • int strncmp(char *str1, char *str2, int n); • Same as strcmp except it considers the first n chars of each string • int strlen(char *str); // returns the length of str • char * strchr(char *str, int c); • Returns a char pointer to the 1st occurrence of character c in str, or NULL otherwise. • char * strstr(char *str, char *pat); • Returns a char pointer to the 1st occurrence of string pat in str, or NULL otherwise. • Plus some other commands • Remarks: • in strcpy, strncpy, strcat, and strncat, make sure that the dst string has enough space to accommodate the string copied or cancatenated to it • If the strings are arrays, also make sure that the array dst is large enough to to accommodate the string copied or cancatenated to it
  • 26. 26 Correspondence between the C library and the C++ string Class C Library Functions C++ string operators/methods strcpy = (the assignment operator) strcat += (assign+concat operator) strcmp = =, !=, <, >, <=, >= strchr, strstr strrchr .find( ) method .rfind( ) method strlen .size( ) or .length( ) methods
  • 27. 27 Char Functions in C (and C++) • The <ctype.h> library in C provides useful functions for single char variables • The next slide gives the most common char functions. • Although the input argument appears to be of type int, it is actually a char.
  • 28. 28 • int isalnum(int c); //non-zero iff c is alphanumeric • int isalpha(int c); //non-zero iff c is alphabetic • int isdigit(int c); //non-zero iff c a digit: 0 to 9 • int islower(int c); //non-zero iff c is lower case • int ispunct(int c); //non-zero iff c is punctuation • int isspace(int c); //non-zero iff c is a space char • int isupper(int c); // non-zero iff c is upper case • int isxdigit(int c); //non-zero iff c is hexadecimal • int tolower(int c); //returns c in lower case • int toupper(int c); //returns c in upper case
  • 29. 29 An example of Using char Functions //PRECONDITION: str a string object //POSTCONDITION: every lower-case alphabetical letter //in str is replaced by its upper-case counterpart void toupper(string& str){ for(int i=0;i<str.size();i++){ char c=str[i]; if (islower(c)){ char C = toupper(c); string strC; strC=C; str.replace(i,1,strC); } } }