31
Definition of Strings Generally speaking, a string is a sequence of characters c string c++ string class Examples: “hello”, “high school”, “H2O”. Typical desirable operations on strings are: Concatenation: “high”+“school”=“highschool” Comparisons: “high”<“school” // alphabetical Finding/retrieving/modifying/

Definition of Strings

  • Upload
    cadee

  • View
    19

  • Download
    1

Embed Size (px)

DESCRIPTION

Definition of Strings. Generally speaking, a string is a sequence of characters c string c++ string class Examples: “hello”, “high school”, “H2O”. Typical desirable operations on strings are: Concatenation: “high”+“school”=“highschool” Comparisons: “high”

Citation preview

Page 1: Definition of Strings

Definition of StringsGenerally speaking, a string is a sequence

of charactersc stringc++ string class

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

Page 2: Definition of Strings

Strings in CIn C, a string can be a specially terminated

char array or char pointera 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.

Page 3: Definition of Strings

The string Class in C++C++ has a <string> libraryInclude it in your programs when you wish

to use strings: #include <string>In this library, a class string is defined and

implementedIt is very convenient and makes string

processing easier than in C

Page 4: Definition of Strings

Declaration of stringsThe following instructions are all

equivalent. They declare x to be an object of type string, and assign the string “high school” to it:std::string x;

using namespace std;– string x(“high school”); – string x= “high school”;– string x; x=“high school”;

Page 5: Definition of Strings

Operations on strings(Concatenation) Let x and y be two stringsTo 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 6: Definition of Strings

Concatenation of Mixed-Style StringsIn s= u + v + w 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 charor 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

Page 7: Definition of Strings

Example of Mixed-Style Concatstring 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!

Page 8: Definition of Strings

More Examples of Concatenation

// The + operator can be used with any combination of // C++ strings, C strings and characters ... strL = strA + strB; strM = "Boo" + strB; strN = strB + "Boo"; strO = '*' + strB; strP = strB + '*';

Page 9: Definition of Strings

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.

Page 10: Definition of Strings

+= Examples

strH += strA; strJ += "Hello"; strK += 'X';

Page 11: Definition of Strings

Comparison Operators for string ObjectsWe can compare two strings x and y

using the following operators: ==, !=, <, <=, >, >=

The comparison is alphabeticalThe outcome of each comparison is:

true or falseThe 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.

Page 12: Definition of Strings

Example of String Comparisonsstring 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<yx<treelow != xp>x

Page 13: Definition of Strings

More Comparison Examples string strA = "hello"; string strB = "a";

if ( strA == "hello" ) cout << "got it" << endl; if ( "hello" == strA ) cout << "got it again" << endl; if ( strB != strA ) cout << "not equal works!" << endl; if ( strA > "Hello" ) cout << "Caps are less" << endl;

Page 14: Definition of Strings

The Index Operator []These allow C++ strings to be used like

arrays of charactersIf x is a string object, and you wish to

obtain the value of the k-th character in the string, you write: x[k];

string x= “high”;char c=x[0]; // c is ‘h’c=x[1]; // c is ‘i’c=x[2]; // c is g

Page 15: Definition of Strings

<< and >>This >> function gets a string value from the

input stream is, and assigns it to str.istream& operator>>( istream& is, string& str);

This << function writes the value of str to the output stream osostream& operator<<( ostream& os, const

string& str);getline inputs a string value. Input stops at end of

line by default

Page 16: Definition of Strings

Input and Output Examples

string strA = "hello boys and girls"; cout << strA << endl; cin >> strA; cout << strA << endl; getline(cin,strA); cout << strA << endl;

Page 17: Definition of Strings

Getting a string Object Length & Checking for EmptinessTo 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();

Page 18: Definition of Strings

Example: using length() in a for loop

string strA = "hello"; printCstring(strA.c_str()); for ( int i = 0; i < strA.length(); i++ ) cout << strA.data()[i]; cout << endl;

Page 19: Definition of Strings

Obtaining Substrings of Strings A substring of a string x is a subsequence of

consecutive characters in xFor example, “rod” is a substring of “product”

substr returns a substring without modifying the string to which the function was applied.

Define the substring as index position up to length The default value for position is 0 The default value of the length is x.length(

int pos = 4;int len = 12;string y = x.substr(pos,len); string y = x.substr(pos); //x[pos..end-1]

Page 20: Definition of Strings

substr Examples

string strA = "123456789"; strB = strA.substr(2,3); // value is "345" strC = strA.substr(2); // value is "3456789"

Page 21: Definition of Strings

Inserting a String Inside AnotherSuppose 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);

Page 22: Definition of Strings

Replacing a Substring by AnotherSuppose 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 stringx.replace(pos,len,y);

Page 23: Definition of Strings

Replace Example

strE = "12345"; strE.replace(1,2,3,'B'); // value is "1BBB45"

Page 24: Definition of Strings

Deleting (Erasing) a Substring of a string ObjectSuppose 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 0To erase the whole string of x, do:

x.erase(pos,len);

x.clear( );

x.erase(pos); // erases x[pos..end-1]

Page 25: Definition of Strings

Examples of erase

string strD = "123456789"; strD.erase(3,5); // value is "1239" strD.erase(2); // value is "12" strD.erase(); // value is ""

Page 26: Definition of Strings

Searching for (and Finding) Patterns in StringsSuppose 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 exists; otherwise, the method returns the length of x (string::npos).

To search starting from a position pos, do

int startLoc = x.find(y);

int startLoc = x.find(y, pos);

Page 27: Definition of Strings

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

Page 28: Definition of Strings

An Examplestring x=“FROM:[email protected]”;int colonPos=x.find(‘:’); string prefix=x.substr(0,colonPos); //=FROMstring suffix = x. substr(colonPos+1);cout<<“-This message is from ”<<suffix<<endl;

Output:-This message is from [email protected]

Page 29: Definition of Strings

What if You Want to Use C-Style StringsYou 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[];

Page 30: Definition of Strings

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.

Page 31: Definition of Strings

Referenceswww.seas.gwu.edu/~ayoussef/cs103/

lecture5.ppt nepsweb.co.uk/pgtcpp/string.htm