26
Strings (CS1123) By Dr. Muhammad Aleem, Department of Computer Science, Mohammad Ali Jinnah University, Islamabad

Cs1123 9 strings

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Cs1123 9 strings

Strings(CS1123)

By

Dr. Muhammad Aleem,

Department of Computer Science, Mohammad Ali Jinnah University, Islamabad

Page 2: Cs1123 9 strings

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

Page 3: Cs1123 9 strings

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

Page 4: Cs1123 9 strings

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.

Page 5: Cs1123 9 strings

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;

Page 6: Cs1123 9 strings

Reading strings (C-String) with spaces

char line[100];

cout << "Type a line terminated by t: “;

cin.getline( line, 100, 't' );

cout << line;

Page 7: Cs1123 9 strings

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

Page 8: Cs1123 9 strings

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…

Page 9: Cs1123 9 strings

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”;

Page 10: Cs1123 9 strings

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

Page 11: Cs1123 9 strings

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.

Page 12: Cs1123 9 strings

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!

Page 13: Cs1123 9 strings

Example of concat-assign Operator +=

string x = “high”; string y = “school”; x+=y;cout<<“x= “<<x<<endl;

Output:x= highschool

Page 14: Cs1123 9 strings

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).

Page 15: Cs1123 9 strings

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<yx<treelow != x

Page 16: Cs1123 9 strings

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’

Page 17: Cs1123 9 strings

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…”;

Page 18: Cs1123 9 strings

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( );

Page 19: Cs1123 9 strings

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);

Page 20: Cs1123 9 strings

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);

Page 21: Cs1123 9 strings

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."

Page 22: Cs1123 9 strings

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);

Page 23: Cs1123 9 strings

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.”

Page 24: Cs1123 9 strings

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);

Page 25: Cs1123 9 strings

An Example (find and substr)

string x =“FROM:[email protected]”;

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 [email protected]

Page 26: Cs1123 9 strings

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.