String Compare

beginner c++11 strings

The std::string class from the Standard Library has the equals operator (==) and the not equals operator (!=) which can be used to compare two strings for equality.

#include <iostream>
#include <string>

const char* as_string(bool b) {
  return b ? "true" : "false";
}

int main() {
  std::string s{"Hello cppbyexample.com"};

  std::cout << as_string(s == "cppbyexample.com") << "\n"; 
  std::cout << as_string(s != "cppbyexample.com") << "\n"; 

  std::string s2{"Hello cppbyexample.com"};
  std::cout << as_string(s == s2) << "\n";
  std::cout << as_string(s != s2) << "\n";
}
false
true
true
false

std::string also supports less than (<) and greater than (>) operators. This is useful for comparing and sorting strings alphabetically.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> // sort

const char* as_string(bool b) {
  return b ? "true" : "false";
}

int main() {
  std::vector<std::string> v{
    "Genesis", 
    "Boston",
    "ABBA",
    "Cream"};

  std::cout << as_string(v[0] < v[1]) << "\n"; 
  std::cout << as_string(v[0] > v[1]) << "\n"; 

  std::sort(v.begin(), v.end()); 

  for (const auto& s : v) {
    std::cout << s << "\n";
  }
}
false
true
ABBA
Boston
Cream
Genesis

std::string also has a compare() method which returns int. The return value is negative if the string on the left of the expression comes before the one on the right, positive the string on the left comes after, and 0 if they are equal.

#include <iostream>
#include <string>

int main() {
  std::string abba{"ABBA"};
  std::string boston{"Boston"};
  std::string genesis{"Genesis"};

  std::cout << abba.compare(boston) << "\n";
  std::cout << genesis.compare(boston) << "\n";
  std::cout << boston.compare(boston) << "\n";
}
-1
5
0

For more C++ By Example, click here.