String Class in cpp(Standard cpp strings)

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

See also