Checking Whether a String Starts with Another String in C++
Posted on In Programming, QA, TutorialIn many text processing tasks, we often need to check if a given string starts with a specific substring. In this article, we will demonstrate how to achieve this using the std::string::compare()
function from the C++ Standard Library.
The compare()
function has several overloads, but the one of interest for our purpose is:
int compare(size_type pos1, size_type count1, const basic_string& str) const;
To check if a string starts with another string, we can call the compare()
function on the first string, with pos1
set to 0
, count1
as the length of the second string, and str
as the second string. If the function returns 0
, it means the strings match at the specified positions.
Here’s a complete example demonstrating how to use the compare()
function to check whether a string starts with another string:
#include <iostream>
#include <string>
bool startswith(const std::string& str, const std::string& cmp) {
return str.compare(0, cmp.length(), cmp) == 0;
}
int main () {
std::cout << std::boolalpha; // To display true/false instead of 1/0
std::cout << "startswith(\"big string here...\", \"big\") -> " << startswith("big string here...", "big") << std::endl;
std::cout << "startswith(\"big string here...\", \"small\") -> " << startswith("big string here...", "small") << std::endl;
std::cout << "startswith(\"big\", \"big string here\") -> " << startswith("big", "big string here") << std::endl;
return 0;
}
The output of the example will be:
$ g++ -std=c++20 cpp-start-with.cpp -o s && ./s
startswith("big string here...", "big") -> true
startswith("big string here...", "small") -> false
startswith("big", "big string here") -> false
In summary, the std::string::compare()
function provides an efficient and straightforward way to check whether a string starts with another string in C++. By using the appropriate parameters, we can easily determine if two strings match at the specified positions, making this function highly useful for various text processing tasks.