C++では、文字列を比較するためにcompare関数が用意されています。
この記事では、
・compare関数とは
・compare関数の使い方
という基本的な内容から、
・==演算子の使い方
などの応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、文字列の比較をするさまざまな使い方をわかりやすく解説します!
compare関数とは
compare関数を使うことで、文字列を比較しその結果を正負の数値で表現します。
compare関数は、元の文字列と比較する文字列が同じ場合は、0を返します。
元の文字列の方が文字列のサイズまたは文字コードで1文字づつを比較して大きい場合は、0より大きい値を返します。
元の文字列の方が文字列のサイズまたは文字コードで1文字づつを比較して小さい場合は、0より小さい値を返します。
compare関数の使い方
compare関数はstringクラスの関数のため、使用する際は<string>ライブラリをインクルードする必要があります。
compare関数の引数の取り方としては以下のようになります。
compare (文字列) compare (開始位置, 長さ, 比較する文字列) compare (開始位置, 長さ, 比較する文字列, 比較する文字列の開始位置, 比較する文字列の長さ)
文字列を比較する方法
まずはじめに文字列同士を比較して、"samurai"と"program"という文字列のうちどちらが大きいかを比較してみます。
次のプログラムで確認してみましょう。
#include <iostream> #include <string> int main() { std::string str1 = "samurai"; std::string str2 = "program"; int result = str1.compare(str2); std::cout << "compare result:" << result << std::endl; return 0; }
実行結果:
compare result:3
このようにアルファベット順でp,q,r,sとなっているので3つ離れているのがわかると思います。
元の文字列の一部と比較する方法
元の文字列の比較する位置と長さを引数に文字列の一部と比較することができます。
例として、"engineer samurai"の"samurai"と"samurai"を比較してみます。
次のプログラムで確認してみましょう。
#include <iostream> #include <string> int main() { std::string str1 = "engineer samurai"; std::string str2 = "samurai"; int result = str1.compare(9, 7, str2); std::cout << "compare result:" << result << std::endl; return 0; }
実行結果:
compare result:0
このように指定した文字列の一部と一致したため結果として0が返ってきたのがわかると思います。
比較する文字列の一部と比較する方法
比較する文字列の範囲を指定して、文字列中の部分文字列と比較する文字列の一部とを比較することができます。
例として"se samurai"の一部と"samurai engineer"の一部を比較してみます。
次のプログラムで確認してみましょう。
#include <iostream> #include <string> int main() { std::string str1 = "se samurai"; std::string str2 = "samurai engineer"; int result = str1.compare(3, 7, str2, 0, 7); std::cout << "compare result:" << result << std::endl; return 0; }
実行結果:
compare result:0
このように"se samurai"と"samurai engineer"の"samurai"を比較して一致しために0が返ってきたのがわかると思います。
==演算子の使い方
==や!=演算子を使うことで、数値型のように文字列が一致しているかを調べることができます。
以下のように使います。
文字列 == 比較したい文字列 文字列 != 比較したい文字列
例として"samurai"と"samurai"、"samurai"と"se"を比較してみます。
次のプログラムで確認してみましょう。
#include <iostream> #include <string> int main() { std::string str1 = "samurai"; std::string str2 = "samurai"; std::string str3 = "se"; if (str1 == str2) { std::cout << "str1 == str2" << std::endl; }else { std::cout << "str1 != str2" << std::endl; } if (str1 != str3) { std::cout << "str1 != str3" << std::endl; }else { std::cout << "str1 != str3" << std::endl; } return 0; }
実行結果:
str1 == str2 str1 != str3
このように==、!=演算子を用いて文字列が一致しているかどうかを調べることができます。
まとめ
いかがだったでしょうか?
今回はcompare関数を使って文字列を比較する方法を解説しました。
compare関数、==、!=演算子を用いて文字列を数値のように比較することができます。
もし文字列を比較する方法を忘れてしまったらこの記事を確認してください。