C Strings
C Strings
C Strings
string x= high;
string y= school;
string z;
Output:
z=x+y;
z=highschool
cout<<z=<<z<<endl;
z =z+ was fun;
z= highschool was fun
cout<<z=<<z<<endl;
Concatenation of Mixed-Style
Strings
In 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 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
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!
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 + '*';
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.
+= Examples
strH += strA;
strJ += "Hello";
strK += 'X';
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
Example of String
Comparisons
string x= high;
char y[]= school;
char *p = good;
If (x<y) Output:
cout<<x<y<<endl; x<y
If (x<tree) x<tree
cout<<x<tree<,endl; low != x
If (low != x) p>x
cout<<low != x<<endl;
if( (p>x)
cout<<p>x<<endl;
Else
cout<<p<=x<<endl;
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;
The Index Operator []
These allow C++ strings to be used like
arrays of characters
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];
string x= high;
char c=x[0]; // c is h
c=x[1]; // c is i
c=x[2]; // c is g
<< 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 os
ostream& operator<<( ostream& os, const
string& str);
getline inputs a string value. Input stops at end of
line by default
Input and Output Examples
int len=x.length( );
--or--
int len=x.size( );
bool x.empty();
Example: using length() in a for
loop
int pos = 4;
int len = 12;
string y = x.substr(pos); //x[pos..end-1]
string y = x.substr(pos,len);
substr Examples
strE = "12345";
strE.replace(1,2,3,'B'); // value is "1BBB45"
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: x.erase(pos,len);
The default value of len is the x.length( )
x.erase(pos); // erases x[pos..end-1]
The default value for pos is 0
To erase the whole string of x, do: x.clear( );
Examples of erase
string strD = "123456789";
strD.erase(3,5); // value
is "1239"
strD.erase(2); // value is
"12"
strD.erase(); // value is
""
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: int startLoc = x.find(y);
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
Output:
-This message is from ayoussef@gwu.edu
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
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.
References
www.seas.gwu.edu/~ayoussef/cs103/lecture5.
ppt
nepsweb.co.uk/pgtcpp/string.htm