In this article we will discuss both case sensitive and insensitive implementations to check if a string starts with an another given string.
In c++, std::string class does not provides any startsWith() function to check if a string starts with an another given string. Let’s see how to do that using std::string::find and Boost Library.
std::string startWith() Implementation using std::string::find
std::string class provides a member function find(), that accepts a string and search for first occurrence of that in the associated string object. If string matches then it returns the position of matched string else return std::string::npos.
For startsWith() implementation let’s use std:string::find to find the first occurrence of given string. If returned position is 0, then it will make sure that our main string starts with the given string.
Frequently Asked:
Case Sensitive Implementation of startsWith() function using std::find
/* * Case Sensitive Implementation of startsWith() * It checks if the string 'mainStr' starts with given string 'toMatch' */ bool startsWith(std::string mainStr, std::string toMatch) { // std::string::find returns 0 if toMatch is found at starting if(mainStr.find(toMatch) == 0) return true; else return false; }
Case Insensitive Implementation of startsWith() function using std::find
For case insensitive implementation of startsWith(), first convert both to lower case and then use std::string::find to check the position of given string.
/* * Case Insensitive Implementation of startsWith() * It checks if the string 'mainStr' starts with given string 'toMatch' */ bool startsWithCaseInsensitive(std::string mainStr, std::string toMatch) { // Convert mainStr to lower case std::transform(mainStr.begin(), mainStr.end(), mainStr.begin(), ::tolower); // Convert toMatch to lower case std::transform(toMatch.begin(), toMatch.end(), toMatch.begin(), ::tolower); if(mainStr.find(toMatch) == 0) return true; else return false; }
Check complete example as follows,
#include <iostream> #include <string> #include <algorithm> /* * Case Sensitive Implementation of startsWith() * It checks if the string 'mainStr' starts with given string 'toMatch' */ bool startsWith(std::string mainStr, std::string toMatch) { // std::string::find returns 0 if toMatch is found at starting if(mainStr.find(toMatch) == 0) return true; else return false; } /* * Case Insensitive Implementation of startsWith() * It checks if the string 'mainStr' starts with given string 'toMatch' */ bool startsWithCaseInsensitive(std::string mainStr, std::string toMatch) { // Convert mainStr to lower case std::transform(mainStr.begin(), mainStr.end(), mainStr.begin(), ::tolower); // Convert toMatch to lower case std::transform(toMatch.begin(), toMatch.end(), toMatch.begin(), ::tolower); if(mainStr.find(toMatch) == 0) return true; else return false; } int main() { std::string mainStr = "This is the sample string"; std::string toMatch = "This"; // Test case-sensitive implementation of startsWith function bool result = startsWith(mainStr , toMatch); std::cout<<result<<std::endl; // Test case-insensitive implementation of startsWith function result = startsWithCaseInsensitive(toMatch, "this"); std::cout<<result<<std::endl; }
Output:
1 1
std::string startWith() using Boost Library
Boost’s algorithm library provides implementation of both case sensitive and insensitive implementation of startsWith() function for string i.e.
Best Resources to Learn C++:
case Sensitive Version :
boost::algorithm::starts_with(mainString, toMatchString) ;
case Insensitive Version :
boost::algorithm::istarts_with(mainString, toMatchString) ;
Header File required : <boost/algorithm/string.hpp>
Checkout complete example as follows,
#include <iostream> #include <string> #include <boost/algorithm/string.hpp> int main() { std::string mainStr = "This is the sample string"; std::string toMatch = "This"; // Test case-sensitive implementation of startsWith function bool result = boost::algorithm::starts_with(mainStr , toMatch); std::cout<<result<<std::endl; // Test case-insensitive implementation of startsWith function result = boost::algorithm::istarts_with(mainStr, "this"); std::cout<<result<<std::endl; }
Output:
1 1
Leave a Reply
You must be logged in to post a comment.