The C++ string class internally stores characters in a char array, but all memory management, allocation, and null termination is handled by the string class itself, which is why it is simple to use. The length of a C++ string can be changed at runtime due to dynamic memory allocation, which is similar to vectors. Because the string class is a container class, we can iterate over all of its characters with an iterator, just like we can with vectors, sets, and maps, but we usually use a simple for loop to iterate over the characters and index them with the [] operator.
Examples:
1)Case sensitive
Input:
string mainstring = "This is BTechGeeks" string matchstring = "btechgeeks"
Output:
Do not ends with given string
2)Case insensitive
Input:
string mainstring = "This is BTechGeeks" string matchstring = "btechGeeks"
Output:
ends with given string
Check to see if a string ends with another string.
There are several methods to check string ends with an another given string some of them are:
Method #1 :Using std::compare
The string class has a public member function called compare(). It compares the string object’s (or a substring’s) value to the character sequence defined by its arguments.
For each string, compare() will process several arguments, allowing you to select a substring by index and length.
To see if a main string ends with a given string, we can only look at the main string’s last n characters, where n is the length of the given string. To find the last occurrence of a given string from location (Size of Main string – size of given string) use std:string::compare().
Below is the implementation:
1)Case sensitive
#include <bits/stdc++.h> using namespace std; int main() { // given main string string mainstring = "This is BTechGeeks"; // given to match string string matchstring = "btechgeeks"; // using compare function to cheeck if the given string // ends with match string if (mainstring.size() >= matchstring.size() && mainstring.compare( mainstring.size() - matchstring.size(), matchstring.size(), matchstring) == 0) cout << "ends with given string" << endl; else cout << "Do not ends with given string" << endl; }
Output:
ends with given string
Method #2:using std::all_of()
The C++ function is defined in the STL library <algorithm>. This feature works on the entire range of array elements, saving time over running a loop to review each element one at a time. It checks each element for a given property and returns true if each element in the range satisfies the specified property otherwise, it returns false.
Let us see the implementation:
1)case sensitive
#include <bits/stdc++.h> using namespace std; int main() { // given main string string mainstring = "This is BTechGeeks"; // given to match string string matchstring = "btechgeeks"; // using all_of function to cheeck if the given string // ends with match string auto it = matchstring.begin(); if (mainstring.size() >= matchstring.size() && all_of( next(mainstring.begin(), mainstring.size() - matchstring.size()), mainstring.end(), [&it](const char& c) { return c == *(it++); })) cout << "ends with given string" << endl; else cout << "Do not ends with given string" << endl; }
Output:
Do not ends with given string
2)Case insensitive
#include <bits/stdc++.h> using namespace std; int main() { // given main string string mainstring = "This is BTechGeeks"; // given to match string string matchstring = "btechgeeks"; // using all_of function to cheeck if the given string // ends with match string auto it = matchstring.begin(); if (mainstring.size() >= matchstring.size() && all_of( next(mainstring.begin(), mainstring.size() - matchstring.size()), mainstring.end(), [&it](const char& c) { return ::tolower(c) == ::tolower(*(it++)); })) cout << "ends with given string" << endl; else cout << "Do not ends with given string" << endl; }
Output:
ends with given string
Method #3:Using ends_with in boost library
The algorithm library in Boost supports both case sensitive and case insensitive implementations of the endsWith() function for strings.
Header file :<boost/algorithm/string.hpp>
1)Case sensitive
Syntax:
boost::algorithm::ends_with(mainstring, matchString) ;
Below is the implementation:
#include <bits/stdc++.h> using namespace std; #include <boost/algorithm/string.hpp> int main() { // given main string string mainstring = "This is BTechGeeks"; // given to match string string matchstring = "btechgeeks"; // using boost function(case sensitive) if (boost::algorithm::ends_with(mainstring, matchstring)) cout << "ends with given string" << endl; else cout << "Do not ends with given string" << endl; }
Output:
Do not ends with given string
2)Case insensitive
Syntax:
boost::algorithm::iends_with(mainstring, matchString) ;
Below is the implementation:
#include <bits/stdc++.h> using namespace std; #include <boost/algorithm/string.hpp> int main() { // given main string string mainstring = "This is BTechGeeks"; // given to match string string matchstring = "btechgeeks"; // using boost function(case insensitive) if (boost::algorithm::iends_with(mainstring, matchstring)) cout << "ends with given string" << endl; else cout << "Do not ends with given string" << endl; }
Output:
ends with given string
Related Programs:
- cpp check if a string starts with an another given string
- how to check if a given key exists in a map cpp
- python program to check if a substring is present in a given string
- python how to check if a key exists in dictionary
- python how to check if an item exists in list
- python how to check if a directory is empty
- python program to check if a string is palindrome or not