2. Reading strings (C-String) with spaces
• getline function of input-stream (cin) can be
used to get input in a character array including
spaces.
• Syntax:
cin.getline(char[ ] arr, int size);
Character Array Size of Array
3. Reading strings (C-String) with spaces
- OR, the programmer can specify its own
terminating character
• Syntax:
cin.getline(char[ ] arr, int size, char term);
Character Array Array size Terminating
character
4. Reading strings (C-String) with spaces
• Examples
char line[25];
cout << "Type a line terminated by enter key”;
cin.getline(line,25);
cout << “You entered: ” << line;
• Reads up to 24 characters (char type values) and
inserts ‘0’ (Null character) at the end. If extra
characters (> 25 in this example) entered by user,
C++ ignore the remaining characters.
5. Reading strings (C-String) with spaces
char name[60];
char university[100];
cout << "Enter your name: ";
cin.getline(name,60);
cout << "Enter your university name: ";
cin.getline(university,100);
cout << name << “ study in ”<< university;
6. Reading strings (C-String) with spaces
char line[100];
cout << "Type a line terminated by t: “;
cin.getline( line, 100, 't' );
cout << line;
7. Strings - Introduction
• A string is a sequence of characters.
• We have used null terminated <char> arrays (C-
strings) to store and manipulate strings.
• C++ also provides a class called string
• We must include <string> in our program.
– More convenient than the C-String
8. Operations
• Creating strings.
• Reading strings from keyboard.
• Displaying strings to the screen.
• Finding a substring from a string.
• Modifying string.
• Adding strings.
• Accessing characters in a string.
• Obtaining the size of string.
• And many more…
9. Declaration of strings
• Following instructions are all equivalent.
• They declare country to be an variable of type
string, and assign the string “Pakistan” to it:
–string country(“Pakistan”);
–string country = “Pakistan”;
–string country;
x=“Pakistan”;
10. Operations: Concatenation
• Concatenation: combining two or ore strings into a
single string
• 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
11. concat-assign Operator +=
• Assume x is a string.
• The statement
x += y;
is equivalent to
x = x + y;
where y can be a string OR a C-style (character
string), a char variable, a double-quoted string
literal, or a single-quoted char.
12. Example of Mixed-Style Concat.
string x= “high”;
char y[ ]= “school”;
char z[ ]= {‘w’, ’a’, ’s’, ‘0’};
string 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!
13. Example of concat-assign Operator +=
string x = “high”;
string y = “school”;
x+=y;
cout<<“x= “<<x<<endl;
Output:
x= highschool
14. Comparison Operators for string Objects
• We can compare two strings x and y using the
following operators: ==, !=, <, <=, >, >=
• Comparison is alphabetical, the outcome of each
comparison is: true or false
• Comparison works as long as at least x or y is a
string.
• The other string can be a string Or a C-String
variable, or a double-quoted string (string literal).
15. Example of String Comparisons
string x = “high”;
char y[ ] = “school”;
if (x<y)
cout<<“x<y”<<endl;
if (x<“tree”)
cout<<“x<tree”<,endl;
if (“low” != x)
cout<<“low != x”<<endl;
Output:
x<y
x<tree
low != x
16. Using Index Operator [ ]
• If x is a string, and you wish to obtain the value of
the k-th character in the string, you may write:
x[k];
• This feature makes string variables similar to
arrays of char
string x = “high”;
char c = x[0]; // c is ‘h’
c = x[1]; // c is ‘i’
c = x[2]; // c is ‘g’
17. Getting a string size, checking for Emptiness
• To obtain the size (number of bytes) of a string
variable, call the method length() or size()
functions:
• To check of x is empty (that is, has no characters in
it):
int len = x.length( );
// OR
int len = x.size( );
If (x.empty() )
cout<<“String x is empty…”;
18. Obtaining sub-strings of Strings
• A substring of a string x is a subsequence of
consecutive characters in x
• Example: “duc” is a substring of “product”
• If x is a string variable, and we want the substring that
begins at position pos and has len characters (where pos
and len are of type int):
• 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( );
19. Inserting a String Inside Another
• Suppose x is a string, and let y be another string to
be inserted at position pos of the string of x:
• The argument y can be: a string variable, a C-style
string variable, or a double-quoted string:
string str = "to be question";
string str2 = "the ";
str.insert(6,str2); // to be the question
x.insert( pos, y);
20. Replacing a Substring by Another
• Suppose x is a string variable, and suppose you
want to replace the characters in range
[pos, len] in x by a string y. To do so, write:
• Aargument y can be: a string variable, a C-style
string variable, or a double-quoted string
x.replace(pos, len, y);
21. Replacing a Substring by Another
• Example:
string base="this is a test string.";
string str2="n example";
string str=base; // "this is a test string."
str.replace(9,5,str2);
cout<<str; // "this is an example string."
22. Deleting (Erasing) a Substring of a string
• Suppose x is a string variable, and suppose you
want to delete/erase the characters in the range
[pos, len] in x.
• To do so, write:
• The default value of len is the x.length( ):
• To erase the whole string of x, do:
x.erase(pos, len);
x.clear( );
x.erase(pos);
23. Deleting (Erasing) a Substring of a string
• Example:
string str("This is an example phrase.");
str.erase(11,8);
cout << str << endl;
Output: “This is an phrase.”
24. Searching for (and Finding) Patterns in Strings
• Suppose x is a string variable, and suppose you
want to search for a string y in x.
• To do so, write:
• 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);
25. An Example (find and substr)
string x =“FROM:ayoussef@abc.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@abc.edu
26. Class Exercise
• Write a C++ program that finds number of
occurrences of a string in another string. The program
takes as an input a string str1 (based on string data-
type). Then it ask the user to enter another string
str2. In the end program display the count or number
value stating the occurrence of str2 in str1.