Wednesday, August 6, 2008

Program to magage strings

Program to manage strings(Source Code)
// Program Ch03pr01
// Program to manage strings


#include
#include
#include



const int MAX = 10 ;

class string
{
    private :

        char str[MAX] ;

    public :

        string( ) {}
        string ( char *s ) {strcpy(str,s);}
        int xstrlen( ) ;
        static void xstrcpy ( string &t, string &s ) ;
        static void xstrcat ( string &t, string &s ) ;
        static int xstrcmp ( string &s1, string &s2 ) ;
        void show( ) ;
} ;



// finds the length of the string
int string::xstrlen( )
{
    int l = 0 ;
    char *s = str ;
    while ( *s )
    {
        l++ ;
        s++ ;
    }
    return l ;
}

// copies source string s to the target string t
void string :: xstrcpy ( string &t, string &s )
{
    char *s1 = t.str ;
    char *s2 = s.str ;

    while ( *s2 )
    {
        *s1 = *s2 ;
        s1++ ;
        s2++ ;
    }
    *s1 = '\0' ;
}

// concatenates the two strings
void string :: xstrcat ( string &t, string &s )
{
    char *s1 = t.str ;
    char *s2 = s.str ;

    while ( *s1 )
        s1++ ;
    while ( *s2 )
        *s1++ = *s2++ ;
    *s1 = '\0' ;
}

// comapres two strings s1 and s2 for equality
int string :: xstrcmp ( string &s1, string &s2 )
{
    char *s = s1.str ;
    char *t = s2.str ;

    while ( *s == *t )
    {
        if ( ! ( *s ) )
            return 0 ;
        s++ ;
        t++ ;
    }
    return ( *s - *t ) ;
}

// displays the string
void string :: show( )
{
    cout << str << endl ;
}

int main( )
{
    string s1 ( "kicit" ) ;
    string s2 ( "Nagpur" ) ;

    cout << endl ;
    cout << "String s1: " ;
    s1.show( ) ;
    cout << "\nLength of string s1: " << s1.xstrlen( ) << endl ;

    cout << "\nString s2: " ;
    s2.show( ) ;

    string s3 ;
    string :: xstrcpy ( s3, s1 ) ;
    cout << "\nString s3 after copying s1 to it: " ;
    s3.show( ) ;

    string :: xstrcat ( s3, s2 ) ;
    cout << "\nString s3 after concatenation: " ;
    s3.show( ) ;

    if ( string :: xstrcmp ( s1, s2 ) == 0 )
        cout << "\nThe strings s1 and s2 are similar" << endl ;
    else
        cout << "\nThe strings s1 and s2 are not similar" << endl ;
        getch();
}

No comments:

Post a Comment