- C++ Programming Examples
- C++ Programming Examples
- C++: Hello World
- C++: Get Input
- C++: Print Integer
- C++: Add two numbers
- C++: Add, Sub, Multiply, Div
- C++: Add Digits
- C++: Find Average and Percentage
- C++: Find Arithmetic Mean
- C++: Sum of n Natural Numbers
- C++: Sum of n Numbers
- C++: Square's Area and Perimeter
- C++: Rectangle's Area and Perimeter
- C++: Triangle's Area and Perimeter
- C++: Area and Circumference
- C++: Find Simple Interest
- C++: Fahrenheit to Celsius
- C++: Celsius to Fahrenheit
- C++: Print Prime Numbers
- C++: Reverse a Number
- C++: Swap Two Numbers
- C++: Print Multiplication Table
- C++: Find Factorial of a Number
- C++: Find Factors of a Number
- C++: Find HCF and LCM
- C++: Create a Calculator
- C++: Count Digits in a Number
- C++: First and Last Digit Sum
- C++: Product of Number Digits
- C++: Sum of Squares of Digits
- C++: Interchange Digits of Number
- C++ if-else Programs
- C++: Check Even or Odd
- C++: Check Prime or Not
- C++: Check Alphabet or Not
- C++: Check Vowel or Not
- C++: Check Leap Year or Not
- C++: Check Reverse equals Original
- C++: Check Perfect Number
- C++: Check Palindrome or Not
- C++: Check Armstrong or Not
- C++: Divisibility Test
- C++: Find Labor Wage
- C++: Find Discounted Price
- C++: Find Shipping Charge
- C++: Find Telephone Bills
- C++: Calculate Student Grade
- C++: Largest of Two Numbers
- C++: Largest of Three Numbers
- C++ Number Conversion
- C++: Decimal to Binary
- C++: Decimal to Octal
- C++: Decimal to Hexadecimal
- C++: Binary to Decimal
- C++: Binary to Octal
- C++: Binary to Hexadecimal
- C++: Octal to Decimal
- C++: Octal to Binary
- C++: Octal to Hexadecimal
- C++: Hexadecimal to Decimal
- C++: Hexadecimal to Binary
- C++: Hexadecimal to Octal
- C++ Pattern Programs
- C++: Pattern Programs
- C++: Print Diamond Pattern
- C++: Print Floyd's Triangle
- C++: Print Pascal's Triangle
- C++ Array Programs
- C++: 1D Array Program
- C++: Linear Search
- C++: Binary Search
- C++: Largest Element in an Array
- C++: Smallest Element in an Array
- C++: Find Second Largest Element
- C++: Find Second Smallest Element
- C++: Sum of All Elements
- C++: Multiply All Elements
- C++: Element in Even Position
- C++: Element in Odd Position
- C++: Print Even Numbers in Array
- C++: Print Odd Numbers in Array
- C++: Count Even or Odd Numbers
- C++: Sum of Even or Odd Numbers
- C++: Count Positive, Negative, Zero
- C++: Reverse an Array
- C++: Insert an Element
- C++: Delete an Element
- C++: Merge two Arrays
- C++: Bubble Sort
- C++: Selection Sort
- C++: Insertion Sort
- C++: Common Elements
- C++: 2D Array Programs
- C++: Add Two Matrices
- C++: Subtract Two Matrices
- C++: Transpose Matrix
- C++: Multiply Two Matrices
- C++: 3D Array Programs
- C++ String Programs
- C++: Print String
- C++: Find String Length
- C++: Compare Two Strings
- C++: Copy String
- C++: String Concatenation
- C++: Reverse a String
- C++: Delete Vowels from a String
- C++: Delete a Word from a String
- C++: Count Characters in a String
- C++: Count Words in a String
- C++: Frequency of Words
- C++: Remove Spaces from Strings
- C++: Sort a String
- C++: Uppercase to Lowercase
- C++: Lowercase to Uppercase
- C++: Swap Two Strings
- C++: Check the Anagram or Not
- C++: Capitalize All Words in a String
- C++: Get Numbers from a String
- C++ File Programs
- C++: Read a File
- C++: Write Content to a File
- C++: Append Data to a File
- C++: Read and Display File
- C++: Copy a File
- C++: Merge Two Files
- Count Characters in a File
- C++: Capitalize Every Word
- C++: List Files in Directory
- C++: Delete a File
- C++: Encrypt and Decrypt a File
- C++ Misc Programs
- C++: Print ASCII Value
- C++: Add Binary Numbers
- C++: Generate Random Numbers
- C++: Print a Smiling Face
- C++: Days into Years and Months
- C++: Add Two Numbers using Pointer
- C++: Print Fibonacci Series
- C++: Generate Armstrong Numbers
- C++: Find nCr and nPr
- C++: Get IP Address
- C++: Print Date and Time
- C++: Shutdown and Restart Computer
- C++ Programming Tutorial
- C++ Tutorial
C++ program to compare two strings
This article will teach you how to compare two strings in C++ and provide you with code to do so. The program is created in the following ways:
- Compare two strings without using the strcmp() function
- Compare two strings using the strcmp() function
Without using strcmp(), compare two strings
To compare two strings in C++ programming, you have to ask the user to enter the two strings and compare them without using any type of library function like strcmp(), as shown in the program given below. Let's have a look at the program first; we'll get the explanation later on.
#include<iostream> using namespace std; int main() { char str1[50], str2[50]; int i=0, chk=0; cout<<"Enter the First String: "; cin>>str1; cout<<"Enter the Second String: "; cin>>str2; while(str1[i]!='\0' || str2[i]!='\0') { if(str1[i]!=str2[i]) { chk = 1; break; } i++; } if(chk==0) cout<<"\nStrings are Equal"; else cout<<"\nStrings are not Equal"; cout<<endl; return 0; }
This program was built and runs under the Code::Blocks IDE. Here is its sample run:
Now enter the value of the first string, "fresherearth," and then again enter the value of the second string, "fresherearth." Press the ENTER key to see the output as shown in the snapshot given below:
Here is another sample run, with user input fresherearth as the first string and crackercodes as the second string:
And here is the last sample run with the user input code as the first string and codes as the second input:
When the user enters the first string, then it gets initialized to str1 in a way that, supposing the user enters code as the first string:
- The first character (c) gets initialized to str1[0].
- The second character (o) gets initialized to str1[1].
- Likewise, str1[2]=d, str1[3]=e.
- Then a null-terminated character \0 is automatically assigned after the last character of the entered string, so str[4]=\0.
In a similar way, the second string gets initialized to str2. Now with user input, code, and codes as the first and second strings, the dry run of the above program goes like this:
- Inside the while loop, the condition is:
str1[i]!='\0' || str2[i]!='\0'
Because i = 0 at first, the condition changes after i is replaced with 0.
str1[0]!='\0' || str2[0]!='\0'
On putting the character present at the 0th index of both the strings.
c!='\0' || c!='\0'
then the condition is evaluated to be true. - Because neither the first or second string's first character is equal to the null-terminated character \0.
- Therefore, program flow goes inside the loop and evaluates the condition of the if statement, that is,
str1[i]!=str2[i]
or
c!=c
This evaluates to false. Therefore, program flow does not go inside the if's body, rather increments the value of i and goes back to the condition of the while loop again. - Because i=1 now, repeat the process with the updated value of i.
- PThe process is repeated until one of the two conditions within the while loop evaluates to false. Or if the condition of if (inside the loop) evaluates to be true, therefore program flow goes inside the if's body and initializes 1 to chk, then using the break keyword, program flow quits the while loop for further execution.
- After exiting from the while loop (either by evaluating its condition as false, or by evaluating the if's condition as true), check for the value of chk in such a way that, if it holds its initial value of 0, then program flow never goes inside the if's body. This means that no characters in either string at the same index are mismatched. It means that strings are equal. Otherwise, if any mismatches are found, then strings are not equal.
What if the user enters strings of unequal length?
As shown in the output with two strings, code and code, the while loop runs four times without reason (comparing code, the first four characters of the first string, with codes, the first four characters of the second string).Because if the lengths of two strings are not equal, then they surely cannot be the same.
So we do not need to evaluate while looping in that case. Therefore, the program given below first finds the length of each string and then checks whether the length of both strings is equal or not. If it is equal, then we will proceed to compare the strings. Otherwise, print a message like "unequal length" or anything else (depends on you):
#include<iostream> using namespace std; int main() { char str1[50], str2[50]; int i, chk=0, len1=0, len2=0; cout<<"Enter the First String: "; cin>>str1; cout<<"Enter the Second String: "; cin>>str2; i=0; while(str1[i]!='\0') { len1++; i++; } i=0; while(str2[i]!='\0') { len2++; i++; } if(len1==len2) { i=0; while(str1[i]!='\0' || str2[i]!='\0') { if(str1[i]!=str2[i]) { chk = 1; break; } i++; } if(chk==0) cout<<"\nStrings are Equal"; else cout<<"\nStrings are not Equal"; } else cout<<"\nString Length must has to be same, to Compare!"; cout<<endl; return 0; }
Here's an example of how it works with user input code and codes as first and second strings:
Compare two strings using strcmp()
With the help of library functions, the program becomes smaller. We don't need to write any extra code to perform tasks like finding the length of a string or comparing strings; library functions like strlen() and strcmp() can handle these tasks easily.
The function strcmp() takes two strings as arguments and returns 0 if both strings are equal. And the function strlen() takes a single string as an argument and returns its length.
#include<iostream> #include<string.h> using namespace std; int main() { char str1[50], str2[50]; int len1, len2; cout<<"Enter the First String: "; cin>>str1; cout<<"Enter the Second String: "; cin>>str2; len1 = strlen(str1); len2 = strlen(str2); if(len1==len2) { if(strcmp(str1, str2)==0) cout<<"\nStrings are Equal"; else cout<<"\nStrings are not Equal"; } else cout<<"\nStrings are not Equal"; cout<<endl; return 0; }
Here's a sample run with user input fresherearth as both the first and second strings:
The same program in different languages
« Previous Program Next Program »