Skip to main content

Operator Overloading - String

Include:
iostream.h
conio.h
process.h


class string
{
public:
char *str;
void operator=(string);
void operator==(string);
void operator+(string);
void operator<=(string);
void operator>=(string);

friend ostream* operator<<(ostream*,string *s1);
friend istream& operator>>(istream&,string &s1);
};


// String Comparison
void string::operator=(string s2)
{
int i,j,flag=0;
for(i=0;s2.str[i]!='\0'||str[i]!='\0';i++)
{
if(s2.str[i]!=str[i])
{
flag=1;
}
}
if(flag==0)
cout<<"\nStrings are equal";
else
cout<<"\nString are not equal";
}


// String Copy
void string::operator==(string s2)
{
int i,j,c=0;
for(i=0;s2.str[i]!='\0';i++)
{
str[i]=s2.str[i];
c++;
}
cout<<"\nCopied string is:- ";
for(i=0;i<=c;i++)
cout<
}


// String Concatenatinon
void string::operator+(string s2)
{
int i,j;
for(i=0;str[i]!='\0';i++);
for(j=0;str[j]!='\0';j++)
{
str[i]=s2.str[j];
i++;
}
cout<<"\nConcated String is:- ";
for(i=0;str[i]!='\0';i++)
cout<
}


istream & operator >> (istream &in,string &s1)
{
for(int i=0;s1.str[i]!='\0';i++)
in>>s1.str[i];
return in;
}

// String Reverse
ostream& operator << (ostream &out,string &s1)
{
for(int i=0;s1.str[i]!='\0';i++);
for(int j=i;j>=0;j--)
out<
return out;
}


// String Palindrome Check
void string::operator<=(string s1)
{
int i,flag=1,j=0;
for(i=0;s1.str[i]!='\0';i++)
j++;
j--;
for(i=0;s1.str[i]!='\0';i++,j--)
if(s1.str[j]!=s1.str[i])
flag=0;
if(flag==1)
cout<<"\nString is Palindrome";
else
cout<<"\nString is not Palindrome";
}



// String SubString
void string::operator>=(string s2)
{
int flag=0,j=0,i;
for(i=0;str[i]!='\0';i++)
{
if(str[i]==s2.str[j])
j++;
else
j=0;

if(s2.str[j]=='\0')
{
cout<<"\nSub-String is Present";
flag=1;
}
}
if(flag==0)
cout<<"\nSubstring is Absent";
}



// Main Function
void main()
{
int ch;
string s1,s2;
char ans;
clrscr();

do
{
cout<<"\n---------Menu---------";
cout<<"\n\n1.Equality";
cout<<"\n2.Copy string";
cout<<"\n3.Concat ";
cout<<"\n4.Reverse";
cout<<"\n5.Palindrom";
cout<<"\n6.Substring ";
cout<<"\n7:Exit";
cout<<"\n\nEnter your Choice : ";
cin>>ch;

switch(ch)
{
case 1: cout<<"\nEnter String 1 For Comparison: ";
cin>>s1.str;
cout<<"\nEnter String 2 For Comparison: ";
cin>>s2.str;
s1=s2;
break;

case 2: cout<<"\nEnter String: ";
cin>>s1.str;
s2==s1;
break;

case 3: cout<<"\nEnter String 1: ";
cin>>s1.str;
cout<<"\nEnter String 2: ";
cin>>s2.str;
s1+s2;
break;

case 4: cout<<"\nEnter String to Reverse: ";
cin>>s1.str;
cout<<"Reversed String is:- ";
cout<
break;
case 5: cout<<"\nEnter String: ";
cin>>s1.str;
s2<=s1;
break;

case 6: cout<<"\nEnter String: ";
cin>>s1.str;
cout<<"\nEnter Sub-String: ";
cin>>s2.str;
s1>=s2;
break;

case 7: exit(1);
}
cout<<"\n\nDo You want to Continue(Y/N) : ";
ans=getche();

} while(ans=='y'||ans=='Y');

getch();
}

Comments

Popular posts from this blog

Selenium + Python + UnexpectedAlertPresentException: Dealing with annoying alerts

Handling  UnexpectedAlertPresentException   Alerts who hates them? I Do!  Who doesn't hate an annoying alert causing your tests / scraping job to fail? I must say they are pretty much on point on the Unexpected part!  Fortunately, there are easy ways to mitigate the issue. 1. Disable alerts completely: driver . execute_script( 'window.alert = function(){};' ); execute this script just before where you anticipate the alert and you're golden. 2. You want to see the alert text but not disturb the execution flow. driver . execute_script( 'window.alert = console.info;' ); Now the alerts have been redirected to the console and you don't have to worry about them. (Unless you have to - then you'd have to monitor the console) 3. You know exactly when it comes and want to accept the alert and move on. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from selenium import webdriver from selenium.webdriver.s...

4. Lex and Yacc Program to detect errors in a 'C' Language Program

Lex and Yacc Program to detect errors in a 'C' Language Program   Lex Code : %{ #include"y.tab.h" #include<stdio.h> int LineNo = 1 ; %} identifier [ a - zA - Z ][ _a - zA - Z0 - 9 ]* number [ 0 - 9 ]+|([ 0 - 9 ]*\.[ 0 - 9 ]+) %% main \(\) return MAIN ; if return IF ; else return ELSE ; while return WHILE ; int | char | flaot return TYPE ; { identifier } return VAR ; { number } return NUM ; \> | \< | \<= | \>= | == return RELOP ; [\ t ] ; [\ n ] LineNo ++; . return yytext [ 0 ]; %% Yacc Code : %{ #include<string.h> #include<stdio.h> extern int LineNo ; int errno = 0 ; %} % token NUM VAR RELOP % token MAIN IF ELSE WHILE TYPE % left '-' '+' % left '*' '/' %% PROGRAM : MAIN BLOCK ; BLOCK : '{' CODE '}' ; CODE : BLOCK | STATEMENT CODE | STATEMENT ; STATEMENT : DECST ';' | DECST { printf ( "\nLine number %d...

How to convert a Helium Wallet Address to Solana Wallet address?

Helium went to Solana Blockchain, on April 18, 2023. Helium addresses are not available on the Solana blockchain as addresses on the Solana blockchain are base-58 encoded. Here is a quick snippet on how to translate an existing Helium wallet address to a Solana wallet address using Python. You will need the base58 module for this, get it here: pip install base58 Code Chunk: def convert_hnt_wallet_addr_to_sol ( helium_wallet_address ) : return base58. b58encode ( base58. b58decode ( hnt_wallet_address ) [ 2 :- 4 ] ) . decode ( ) Using this convert your Helium wallet address to a Solana address! You can further explore our blog for interesting reads  OR   - you can contact us to learn a bit more over a FREE personal Skype coaching session. Just click on "Leave a message" and reach out to us. We get a lot of volume these days so FREE Sessions won't be here for a long time, Grab this opportunity while you can!