Here is how to test the string class already present in cpp.
To use simple strings u have to include . For example consider the program,
#include
#include <conio.h>
using namespace std;
int main()
{
string word="hello”;
cout«word;
getch();
}
There are various functions and operators in this string class. These operators are present in string -
= assignment
+ , += concatenation etc
== , != . < , <= , >= , > equality etc.
[] subscription
« output
>> input
Following are the functions which are present in the string class
Consider the program:
#include
#include <conio.h>
using namespace std;
int main( )
{
string s1 ( “kicit” ) ;
string s2 ( “Nagpur” ) ;
cout « endl ;
cout « “String s1: " ;
cout«s1;
cout « “\nLength of string s1: " « s1.length( ) « endl ;
cout « “\nString s2: " ;
cout«s2;
string s3 = s1;// copy
cout«”\ns3="«s3;
s3=s3+s1;
cout « “\nString s3 after concatenation: " ;
cout«s3;
if ( s1.compare(s2)== 0 )
cout « “\nThe strings s1 and s2 are similar” « endl ;
else
cout « “\nThe strings s1 and s2 are not similar” « endl ;
getch();
}
Some more cases of string:
string s1; //s1 contains 0 character
string s2 = “New York”; //s1 contains 8 character
string s3(60,'*'); //s1 contains 60 asterisk
string s4=s3; //s1 contains 60 asterisk
string s5(s2, 4,2); //s1 contains 2 characters , i.e. “Yo”
Some more:
string s= “ABCDEFG”;
getline(s,cin); // reads the entire string with spaces into s
char c = s[2]; // c = C;
s[4]=’*'; //s= “ABCD*FG”;
const char * cs = s.c_str(); // CONVERT s TO C STRING
Using find, substr(), erase() and replace
s6=s+"HIJK”;
s4= s6.substr();
s6.erase(4, 2);
s6.replace(5,2, “xyz”)
s6 = “Missisippi River”;
hello i am not hter
constructors 1.
* * *
#include
#include
using namespace std;
int main ()
{
char \*line = "short line for testing";
// with no arguments
**string s1**;
s1 = "Anatoliy";
cout << "s1 is: " << s1 << endl;
// copy constructor
**string** s2 (s1);
cout << "s2 is: " << s2 << endl;
// one argumen
**string** s3 (line);
cout << "s3 is: " << s3 << endl;
// first argumen C string
// second number of characters
**string s4** (line,10);
cout << "s4 is: " << s4 << endl;
// 1 - C++ string
// 2 - start position
// 3 - number of characters
**string s5** (s3,6,4); // copy word 'line' from s3
cout << "s5 is: " << s5 << endl;
// 1 - number characters
// 2 - character itself
**string s6** (15,'\*');
cout << "s6 is: " << s6 << endl;
// 1 - start iterator
// 2 - end iterator
**string s7** (s3.begin(),s3.end()-5);
cout << "s7 is: " << s7 << endl;
// you can instantiate string with assignment
**string s8** = "Anatoliy";
cout << "s8 is: " << s8 << endl;
return 0;
}
**OUTPUT:**
// s1 is: Anatoliy
// s2 is: Anatoliy
// s3 is: short line for testing
// s4 is: short line
// s5 is: line
// s6 is: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
// s7 is: short line for te
// s8 is: Anatoliy
getline 1.
* * *
/\* 1 getline ( intut\_stream, str, delim );
Extracts characters from intut\_stream and stores them
in str until s.max\_size() characters have been extracted,
the end of file occurs, or delim is encountered, in which
case delim is extracted from istr but is not stored in s
2 getline( Iter, str )
Inputs a string value for str as in the preceding func�
tion with delim =
\*/
#include
#include
#include
#include
using namespace std;
int main ()
{
string str;
cout << "Enter string (EOL = $) : ";
**getline** (cin, str, '$');
cout << "Str is : " << str << endl;
ifstream In("data.dat");
vector v;
cout << endl << "Read data from file" << endl;
while ( ! In.eof() )
{
**getline** (In, str);
v.push\_back(str);
}
copy (v.begin(),v.end(),
ostream\_iterator(cout,"\\n"));
cout << endl;
return 0;
}
**OUTPUT:**
// Enter string (EOL = $) : Str is : first line
// second line$
//
// Read data from file
// file: "data.dat"
// second line
// last line
<< >> operators 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str;
cout **<<** "Enter string for testing : ";
cin **\>>** str;
cout << "\\nString is : " **<<** str << endl;
cout << "Enter string for testing "
<< "(d to quit) : ";
while ( cin **\>>** str )
{
cout << endl;
cout << "String is : " **<<** str << endl;
cout << "Enter string for testing "
<< "(d to quit) : ";
}
return 0;
}
**OUTPUT:**
// Enter string for testing : first
// String is : first
// Enter string for testing (d to quit) : second
// String is : second
// Enter string for testing (d to quit) : third
// String is : third
// Enter string for testing (d to quit) :
+ += = operators 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str **\=** "Hello";
cout << "str is : " << str << endl;
str **+=** ",";
str **+=** ' ';
cout << "str is : " << str << endl;
string s;
s = str **+** "World";
cout << "s is : " << s << endl;
char ch **\=** '!';
s **+=** ch;
cout << "s is : " << s << endl;
return 0;
}
**OUTPUT:**
// str is : Hello
// str is : Hello,
// s is : Hello, World
// s is : Hello, World!
append 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "Nobody is perfect";
string s = ""; // empty string
char \*ch = "abcdef";
// append string str at the end of s;
// return s
// appends at the end of s a copy of the n characters
// in str, starting at position pos; if n is too
// large, characters are copied only until the end
// of str is reached;
// returns s
**s.append**(str,0,6);
cout << "s is : " << s << endl;
// appends copies of the characters in the range \[inpIt1,
// inpIt2\] to s; returns s
string::iterator inpIt1 = str.begin()+6;
//start from ' is'
string::iterator inpIt2 = str.end();
**s.append**(inpIt1,inpIt2);
cout << "s is : " << s << endl;
// appends three !
**s.append**(3,'!');
cout << "s is : " << s << endl;
// appends the first n characters in ch at the end
// of s; returns s
**s.append**(ch,3);
cout << "s is : " << s << endl;
// appends charArray at the end of s; returns s
**s.append**(ch,3);
cout << "s is : " << s << endl;
return 0;
}
**OUTPUT:**
// s is : Nobody
// s is : Nobody is perfect
// s is : Nobody is perfect!!!
// s is : Nobody is perfect!!!abc
// s is : Nobody is perfect!!!abcabc
assign 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "Nobody is perfect";
string s = "";
char \*ch = "Robert Frost";
// assigns a copy of str to s; returns s
**s.assign**(str);
cout << "s is : " << s << endl;
// assigns to s a copy of the n characters in str, start�
// ing at position 10: if n is too large, characters are
// copied only until the end of str is reached: returns s
**s.assign**(str,10,7); // perfect
cout << "s is : " << s << endl;
// assigns to s a string consisting of the first n charac�
// ters in ch: returns s
**s.assign**(ch,6);
cout << "s is : " << s << endl;
// assigns to s a copy of ch: returns s
**s.assign**(ch);
cout << "s is : " << s << endl;
// assigns to s a string consisting of the characters in
// the range str.begin(), str.end(); returns s
**s.assign**(str.begin(),str.end());
cout << "s is : " << s << endl;
// assigns to s a string consisting of n copies of ch;
// returns s
**s.assign**(17,'\*');
cout << "s is : " << s << endl;
return 0;
}
**OUTPUT:**
// s is : Nobody is perfect
// s is : perfect
// s is : Robert
// s is : Robert Frost
// s is : Nobody is perfect
// s is : \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
at 1.
* * *
// returns s\[pos\]
#include
#include
using namespace std;
int main ()
{
string s = "Nobody is perfect";
// Returns s\[pos\]
for ( int pos = 0; pos < s.length(); ++pos )
cout << **s.at**(pos) << " ";
cout << endl;
return 0;
}
**OUTPUT:**
// N o b o d y i s p e r f e c t
begin 1.
* * *
// Returns an iterator positioned at the
// first character in a string
#include
#include
using namespace std;
int main ()
{
string str = "C++ is best computer language";
string::iterator It = **str.begin**();
while ( It != **str.end**() )
{
if ( \*It == ' ' )
\*It = '\\n';
cout << \*It++;
}
cout << endl;
return 0;
}
**OUTPUT:**
// C++
// is
// best
// computer
// language
c\_str 1.
* * *
// returns (the base address of) a char
// array containing the characters stored in s,
// terminated by a null character.
#include
#include
using namespace std;
int main ()
{
string str = "Anatoliy";
char \*ary = new char\[str.length()+1\];
// strcpy ( ary, str ); that is wrong way
strcpy ( ary, **str.c\_str**() ); // that is correct
cout << ary << endl;
return 0;
}
**OUTPUT:**
// Anatoliy
capacity 1.
* * *
// returns the size (of type size\_type)
// of the storage allocated in string
#include
#include
using namespace std;
int main ()
{
string str = "C++ is best computer language";
string::size\_type cap;
cap = **str.capacity**();
cout << "Capacity of str is: " << cap << endl;
cout << "Size of str is : " << str.size()
<< endl;
cout << "Length of str is : " << str.length()
<< endl;
cout << "Resize the str for 50 character" << endl;
str.resize(50);
cap = **str.capacity**();
cout << "Capacity of str is: " << cap << endl;
cout << "Size of str is : " << str.size()
<< endl;
cout << "Length of str is : " << str.length()
<< endl;
return 0;
}
**OUTPUT:**
// Capacity of str is: 32
// Size of str is : 29
// Length of str is : 29
// Resize the str for 50 character
// Capacity of str is: 64
// Size of str is : 50
// Length of str is : 50
compare 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str1 = "string";
string str2 = "String";
string str3 = "second string";
char ch\[\] = "first string";
cout << "string str1 is : " << str1 << endl;
cout << "string str2 is : " << str2 << endl;
cout << "char ary ch is : " << ch << endl;
cout << "string str3 is : " << str3 << endl;
cout << endl;
// compare str1 and str2
cout << "1." << endl;
size\_t comp = **str1.compare**(str2);
cout << "String str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to string str2" << endl;
// compare str1 and literal string "string"
cout << "2." << endl;
comp = **str1.compare**("string");
cout << "String str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to array of char \\"string\\"" << endl;
// 3. and 4. doesn't work with Microsoft
// Visual Studio compiler
// compare str3 start from pos 7 to 5
// with str1
cout << "3." << endl;
comp = **str3.compare**(str1,7,5);
cout << "Part of string str3 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to str1" << endl;
// compare str3 start from pos 7
// with literal string "string"
cout << "4." << endl;
comp = **str3.compare**("string",7);
cout << "Part of string str3 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to C string \\"string\\"" << endl;
// next 4 'compare' functions
// doesn't work with GNU compiler
cout << "5." << endl;
comp = **str1.compare**(6,10,ch);
cout << "String str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to part of char ary \\"first string\\""
<< endl;
cout << "6." << endl;
comp = **str1.compare**(0,3,str3);
cout << "Part of str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to string \\"second string\\""
<< endl;
cout << "7." << endl;
comp = **str1.compare**(1,3,str2,1,3);
cout << "String str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to part of string \\"second string\\""
<< endl;
cout << "8." << endl;
comp = **str1.compare**(1,3,str2,1,3);
cout << "String str1 is ";
( comp == 0 ) ? cout << "equal" : cout
<< "not equal";
cout << " to part of string \\"second string\\""
<< endl;
return 0;
}
**OUTPUT:** GNU compiler
// string str1 is : string
// string str2 is : String
// char ary ch is : first string
// string str3 is : second string
//
// 1.
// String str1 is not equal to string str2
// 2.
// String str1 is equal to array of char "string"
// 3.
// Part of string str3 is equal to str1
// 4.
// Part of string str3 is equal to C string "string"
// **5.**
// **6.**
// **7.**
// **8.**
**OUTPUT:** Microsoft Visual Studio compiler
// string str1 is : string
// string str2 is : String
// char ary ch is : first string
// string str3 is : second string
//
// 1.
// String str1 is not equal to string str2
// 2.
// String str1 is equal to array of char "string"
// **3.**
// **4.**
// 5.
// String str1 is not equal to part of char ary "first
// string"
// 6.
// Part of str1 is not equal to string "second string"
// 7.
// String str1 is equal to part of string "second string"
// 8.
// String str1 is equal to part of string "second string"
// Press any key to continue
copy 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "First Name: Robert";
char fname\[255\];
cout << "str is: " << str << endl;
int n = str.find(':');
**str.copy**(fname, // copy to array
n+1, // how many char
0); // start position from str
// must terminate fname with '\\0';
fname\[n+1\] = 0;
cout << "fname is: " << fname << endl;
return 0;
}
**OUTPUT:**
// str is: First Name: Robert
// fname is: First Name:
empty 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "\*\*\*\*\*\*\*";
while ( ! **str.empty**() )
{
cout << str << endl;
str.erase(str.end()-1);
}
cout << endl;
return 0;
}
**OUTPUT:**
// \*\*\*\*\*\*\*
// \*\*\*\*\*\*
// \*\*\*\*\*
// \*\*\*\*
// \*\*\*
// \*\*
// \*
end 1.
* * *
// returns an iterator porsitioned immediately
// after the last character in string
#include
#include
using namespace std;
int main ()
{
string s;
string str = "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*";
size\_t pos = str.length();
while ( pos )
{
s.assign ( **str.begin**(),**str.end**() - pos+1);
cout << s << endl;
pos -= 5;
}
return 0;
}
**OUTPUT:**
// \*
// \*\*\*\*\*\*
// \*\*\*\*\*\*\*\*\*\*\*
// \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
// \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
erase 1.
* * *
#include
#include
#include
using namespace std;
int main ()
{
string str, s;
for ( char ch = 'a'; ch <= 'z'; ch++ )
str.append(1,ch);
s = str;
cout << "str is: " << str << endl;
cout << "s is: " << str << endl;
// removes 13 characters from the beginning
**str.erase**(0,13);
cout << "Erased range fron str : " << str << endl;
// removes 13 characters starts from 14
str = **s.erase**(13,13);
cout << "Erased range from s : " << str << endl;
// removes one character pointed by s.begin()
cout << endl << "Erase one, second character from s"
<< endl;
**s.erase**(s.begin()+1);
cout << "s is: " << s << endl;
// removes range of characters
s.**erase**(s.begin(),s.begin()+4);
cout << "s is: " << s << endl;
return 0;
}
**OUTPUT:**
// str is: abcdefghijklmnopqrstuvwxyz
// s is: abcdefghijklmnopqrstuvwxyz
// Erased range fron str : nopqrstuvwxyz
// Erased range from s : abcdefghijklm
//
// Erase one, second character from s
// s is: acdefghijklm
// s is: fghijklm
find 1.
* * *
#include
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
int pos1, pos2; // size\_t or size\_type
// work not correct
// search for first string "best" inside of str
// default position is 0
pos1 = **str.find** ("best");
cout << "Word best is found on position " << pos1+1
<< endl;
// if pattern is not found - return -1
pos2 = **str.find** ("best",pos1+1);
cout << "Word best is found on position " << pos2+1
<< endl;
// search for first occurrence of character
pos1 = **str.find**('g');
cout << "First character 'g' found on position "
<< pos1
<< endl;
// search for first occurrence of string
string s = "is";
pos1 = **str.find** (s);
cout << "Word 'is' is found on position " << pos1+1
<< endl;
return 0;
}
**OUTPUT:**
// Word best is found on position 8
// Word best is found on position 0
// First character 'g' found on position 15
// Word 'is' is found on position 5
find\_first\_not\_of 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
cout << "str is: " << str << endl;
int n = **str.find\_first\_not\_of**("aeiouAEIOU");
cout << "First consonant found at " << n+1
<< " position" << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// First consonant found at 1 position
find\_first\_not\_of 2.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
cout << "str is: " << str << endl;
// search first not ' ',
// start from position 7
int n = **str.find\_first\_not\_of**(' ',7);
cout << "first not of space character "
<< "found at position " << n+1 << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// first not of space character found at position 8
find\_first\_not\_of 3.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
string s = "C++";
cout << "str is: " << str << endl;
// search character from pattern
// using the first x ch�racters in pattern.
// the value position must be given
int n = **str.find\_first\_not\_of**("CBCD",0,3);
cout << "first not 'C' is found at position "
<< n+1 << endl;
// search first not of
// pattern is string
n = **str.find\_first\_not\_of**(s);
cout << "first not of C++ is found "
<< "at position " << n+1 << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// first not 'C' is found at position 2
// first not of C++ is found at position 4
find\_first\_of 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
string s = "be";
cout << "str is: " << str << endl;
// search be start from position 2
// if position is ommited - default is 0
int n = **str.find\_first\_of**(s,2);
cout << "first 'be' found at position "
<< n+1 << endl;
// same as above but search for character
n = **str.find\_first\_of**('l');
cout << "first character 'l' found at "
<< "position " << n+1 << endl;
// search 'first of' for the characters in
// charary
char charary\[\] = " bea";
cout << "charary\[\] = \\" bea\\"" << endl;
n = **str.find\_first\_of**(charary,0);
cout << "first character from charary "
<< "found at position " << n+1 << endl;
cout << "Note: position 4 is space" << endl;
// same as above but third argumen is
// number of character from which searching
// starts
// this variant of find\_first\_of dosn't
// work properly with GNU compiler
n = **str.find\_first\_of**(" bae",0,3);
cout << "first character from charary "
<< "found at position " << n+1 << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// first 'be' found at position 8
// first character 'l' found at position 13
// charary\[\] = " bea"
// first character from charary found at position 4
// Note: position 4 is space
// first character from charary found at position 4
find\_last\_not\_of 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
string s = "langue";
int pos = str.length()-1;
cout << "str is: " << str << endl;
// returns the highest position <= pos of a character
// in str that does not match any charcter in s;
// returns nopos if there is no such position:
// npos is the default value for pos
int n = **str.find\_last\_not\_of**(s, pos);
cout << "last\_not\_of 'langue' found at position "
<< n+1 << endl;
// same as above but search for single character
n = **str.find\_last\_not\_of**('e');
cout << "last\_not\_of 'e' found at position "
<< n+1 << endl;
char ary\[\] = "be";
// seawrch for occurence last\_not\_of
// from pattern ary in str
n = **str.find\_last\_not\_of**(ary);
cout << "last\_not\_of 'be' found at position "
<< n+1 << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// last\_not\_of 'langue' found at position 12
// last\_not\_of 'e' found at position 19
// last\_not\_of 'be' found at position 19
find\_last\_of 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str("C++ is best language");
string s = "g";
cout << "str is: " << str << endl;
cout << "s is: " << s << endl;
int n = **str.find\_last\_of**(s);
cout << "last\_of '" << s << "' faund"
<< " at position " << n+1 << endl;
n = **str.find\_last\_of**(' ');
cout << "last\_of ' ' faund"
<< " at position " << n+1 << endl;
n = **str.find\_last\_of**(" la");
cout << "last\_of \\" la\\" faund"
<< " at position " << n+1 << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best language
// s is: g
// last\_of 'g' faund at position 19
// last\_of ' ' faund at position 12
// last\_of " la" faund at position 18
insert 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "C++ language";
string s = "is best";
char ch\[\] = "C++ language";
cout << "str is: " << str << endl;
cout << "s is: " << s << endl;
cout << "ch is: " << s << endl;
// insert a copy of s into str
// at position pos;
string::size\_type pos = 4;
**str.insert**(pos,s);
cout << "str is: " << str << endl;
// insert a copy of ch into str at
// the position specified by iterator
// return an iterator positioned at
// this copy
int n = str.find('l');
**str.insert**(str.begin() + n,' ');
cout << "str is: " << str << endl;
// like above but n x copies of char
**str.insert**(str.end(),3,'!');
cout << "str is: " << str << endl;
// insert 4 char from ch into s
// at the position 0
**s.insert**(0,ch,4);
cout << "s is: " << s << endl;
// insert 8 characters from str
// start from position n ('langu...')
// into s at position x (end string)
n = str.find('l');
int x = s.length();
**s.insert**(x,str,n,8);
cout << "s is: " << s << endl;
n = s.find('l');
**s.insert**(s.begin()+n,' ');
cout << "s is: " << s << endl;
// insert range (begin - begin+7) of str
// into s at position begin+4
**s.insert**(s.begin()+4,str.begin(),str.begin()+7);
cout << "s is: " << s << endl;
return 0;
}
**OUTPUT:**
// str is: C++ language
// s is: is best
// ch is: is best
// str is: C++ is bestlanguage
// str is: C++ is best language
// str is: C++ is best language!!!
// s is: C++ is best
// s is: C++ is bestlanguage
// s is: C++ is best language
// s is: C++ C++ is is best language
length 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "C++ is best computer language";
cout << "str is: " << str << endl;
cout << "Length of str is : "
<< **str.length**() << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best computer language
// Length of str is : 29
max\_size 1.
* * *
// returns a reverse iterator positioned
// at the last character in string
#include
#include
using namespace std;
int main ()
{
string str = "C++ is best computer language";
cout << "str is: " << str << endl;
cout << "max\_size of str is: "
<< **str.max\_size**() << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best computer language
// max\_size of str is: 4294967294
rbegin 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "C++ is best computer language";
cout << "str is: " << str << endl;
// usual iterator doesn't work
string::reverse\_iterator It = **str.rbegin**();
while ( It != **str.rend()** )
cout << \*It++;
cout << endl;
return 0;
}
**OUTPUT:**
// str is: C++ is best computer language
// egaugnal retupmoc tseb si ++C
replace 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "STL is created from Dennis Ritchie";
string s1 = "was";
string s2 = "developed";
string s3 = "Stepanov alexander";
cout << "str is: " << str << endl;
cout << "replace 'is' for 'was'" << endl;
**str.replace**(4, // start position in str
2, // how many characters
s1); // source for replasment
cout << "str is: " << str << endl;
cout <<"replace 'created' for 'developed'" << endl;
int n = str.find('c'); // pos of 'created'
int x = str.find("from") -1;
**str.replace**(str.begin()+n,// start pointer
str.begin()+x, // end pointer
s2); // source
cout << "str is: " << str << endl;
cout << "replace 'Dennis' for 'alexander'" << endl;
int x1 = str.find('D'); // search Dennis
int x2 = str.find(' ',x1+1); // space after
int y1 = s3.find("alex"); // search 'alex'
int y2 = strlen("alexander");
**str.replace**(x1, // start position in str
x2-x1, // how characters to replace
s3, // source for replacement
y1, // start positio from source
y2); // how chracter start from y1
cout << "str is: " << str << endl;
cout << "replace 'from' for 'by'" << endl;
char ary\[\] = "bytes";
n = str.find("from");
// same variant possible with iterators
// instead of number of position
**str.replace**(n, // start position in str
4, // how many characters
ary, // source
2); // first 2 characters from source
cout << "str is: " << str << endl;
cout << "replace 'a' for 'A' (alexander)" << endl;
n = str.find("alexander");
**str.replace**(n, // start position in str
1, // how character(s)
1, // how many copies of character
'A'); // character for replasment
cout << "str is: " << str << endl;
cout << "replace 'Ritchie' for 'Stepanov'" << endl;
x1 = str.find('R');
y1 = s3.find(' ');
**str.replace**(str.begin()+x1, // start pointer
str.end(), // to the end of str
s3.begin(), // start pointer from source
s3.begin()+y1 // end pointer from
); // source
cout << "str is: " << str << endl;
return 0;
}
**OUTPUT:**
// str is: STL is created from Dennis Ritchie
// replace 'is' for 'was'
// str is: STL was created from Dennis Ritchie
// replace 'created' for 'developed'
// str is: STL was developed from Dennis Ritchie
// replace 'Dennis' for 'alexander'
// str is: STL was developed from alexander Ritchie
// replace 'from' for 'by'
// str is: STL was developed by alexander Ritchie
// replace 'a' for 'A' (alexander)
// str is: STL was developed by Alexander Ritchie
// replace 'Ritchie' for 'Stepanov'
// str is: STL was developed by Alexander Stepanov
reverse 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "Anatoliy Urbanskiy";
cout << str.reverse() << endl;
return 0;
}
**OUTPUT:**
resize 1.
* * *
// if <=s.size(), truncates rightmost
// character in s to make it of size n; otherwise, adds
// copies of character ch to end of s to increase it size
// to n, or adds a default character value (usually a
// blank) if ch is omitted; return type is void
#include
#include
using namespace std;
int main ()
{
string str = "Alexander Stepanov";
cout << "str is: " << str << endl;
cout << "size of str is: "
<< str.size() << endl;
**str.resize**(11);
cout << "after str.resize(11)" << endl;
cout << "str is: " << str << endl;
cout << "size of str is: "
<< str.size() << endl;
**str.resize**(20,'.');
cout << "after str.resize(20,'.')" << endl;
cout << "str is: " << str << endl;
cout << "size of str is: "
<< str.size() << endl;
return 0;
}
**OUTPUT:**
// str is: Alexander Stepanov
// size of str is: 18
// after str.resize(11)
// str is: Alexander S
// size of str is: 11
// after str.resize(9,'.')
// str is: Alexander S.........
// size of str is: 20
rfind 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "We go step by step to the target";
string s1 = "step";
cout << "str is: " << str << endl;
cout << "s1 is: " << s1 << endl;
cout << "int n1 = str.find(s1)" << endl;
int n1 = str.find(s1);
cout << "n1 = " << n1+1 << endl;
cout << "int n2 = str.rfind(s1)" << endl;
int n2 = **str.rfind**(s1);
cout << "n2 = " << n2+1 << endl;
cout << "n3 = str.rfind(s1,n2-1)" << endl;
int n3 = **str.rfind**(s1,n2-1);
cout << "n3 = " << n3+1 << endl;
cout << "n1 = str.rfind('t')" << endl;
n1 = **str.rfind**('t');
cout << "n1 = " << n1+1 << endl;
cout << "n2 = str.rfind('t',n1-1)" << endl;
n2 = **str.rfind**('t',n1-1);
cout << "n2 = " << n2+1 << endl;
char ch\[\] = "step";
cout << "char ch\[\] = \\"step\\"" << endl;
cout << "n1 = str.rfind(ch)" << endl;
n1 = **str.rfind**(ch);
cout << "n1 = " << n1+1 << endl;
cout << "n2 = str.rfind(\\"stabc\\",10,2)" << endl;
n2 = **str.rfind**("stabc", // pattern
10, // start position
2); // for first 2 char
// in pattern
cout << "n2 = " << n2+1 << endl;
return 0;
}
**OUTPUT:**
// str is: We go step by step to the target
// s1 is: step
// int n1 = str.find(s1)
// n1 = 7
// int n2 = str.rfind(s1)
// n2 = 15
// n3 = str.rfind(s1,n2-1)
// n3 = 7
// n1 = str.rfind('t')
// n1 = 32
// n2 = str.rfind('t',n1-1)
// n2 = 27
// char ch\[\] = "step"
// n1 = str.rfind(ch)
// n1 = 15
// n2 = str.rfind("stabc",10,2)
// n2 = 7
size 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str = "We go step by step to the target";
string::size\_type size = **str.size**();
cout << "str is: " << str << endl;
cout << "size of str = " << size << endl;
return 0;
}
**OUTPUT:**
// str is: We go step by step to the target
// size of str = 32
substr 1.
* * *
// str.subsr(pos,n);
// returns a copy of the substring consisting
// of n characters from str, beginning at position pos
// (default value 0); if n is too large or is omitted,
// characters are copied only until the end of s is
// reached
#include
#include
using namespace std;
int main ()
{
string str = "We go step by step to the target";
cout << "str is: " << str << endl;
int n = str.find("step");
string s = **str.substr**(n);
cout << "s is: " << s << endl;
s = **str.substr**(n,12);
cout << "s is: " << s << endl;
return 0;
}
**OUTPUT:**
// str is: We go step by step to the target
// s is: step by step to the target
// s is: step by step
swap 1.
* * *
#include
#include
using namespace std;
int main ()
{
string str1 = "Robert";
string str2 = "Forest";
cout << "str1 is: " << str1 << endl;
cout << "str2 is: " << str2 << endl;
cout << endl;
cout << "str1.swap(str2)" << endl;
cout << endl;
**str1.swap**(str2);
cout << "str1 is: " << str1 << endl;
cout << "str2 is: " << str2 << endl;
return 0;
}
**OUTPUT:**
// str1 is: Robert
// str2 is: Forest
//
// str1.swap(str2)
//
// str1 is: Forest
// str2 is: Robert