C++の関係演算子(==、!=、<、>など)で文字列オブジェクトを比較する方法
C++における文字列比較の基本
ここでは、C++で2つの文字列を比較する方法を紹介します。C++にはstringクラスが用意されており、標準ライブラリには文字列比較専用のcompare()関数も存在します。しかし本記事では、==、!=、<、>、<=、>= といった関係演算子を使った比較方法を解説します。これらの演算子は、2つの文字列を先頭から1文字ずつ順番に照合していく仕組みです。それでは、理解を深めるために実際のコードを見てみましょう。
サンプルコード
#include<iostream>
using namespace std;
void compareStrings(string s1, string s2) {
if (s1 != s2)
cout << s1 << " is not equal to "<< s2 << endl;
else if(s1 == s2)
cout << "Strings are equal";
if (s1 > s2)
cout << s1 << " is greater than "<< s2 << endl;
else if(s1 < s2)
cout << s2 << " is greater than "<< s1 << endl;
}
int main() {
string s1("hello");
string s2("helLo");
compareStrings(s1, s2);
}実行結果
hello is not equal to helLo hello is greater than helLo
コードの解説
このプログラムでは、「hello」と「helLo」という2つの文字列を比較しています。5文字目の 'l' と 'L' が異なるため、両者は等しくないと判定されます。
大小の比較では、各文字のASCIIコードの値が基準となります。小文字の 'l'(ASCIIコード:108)は、大文字の 'L'(ASCIIコード:76)よりも大きな値を持つため、「hello」の方が「helLo」より大きいという結果になります。
このように、stringクラスに対して関係演算子を使用すれば、compare()関数を呼び出すことなく、直感的かつ簡潔に文字列の等価性や辞書順での大小関係を判定できます。日常的なプログラムでは、可読性の高いこの方法が広く使われています。
-
C++を使って文字列から特定の単語を削除する方法
本記事では、与えられた文字列から指定した単語を削除する問題を解説します。まず、具体的な例を見てみましょう。入力 : str = remove a given word, word = remove 出力 : a given word 入力 : str = god is everywhere, word = is 出力 : god everywhere解決のためのアプローチ文字列から特定の単語を削除するには、シンプルな手法を用いることができます。手順は以下の通りです。まず、与えられた文字列を2次元配列(マトリックス)形式に変換し、各行に1つの単語を格納します。マトリックス内から対象の単語を検索
-
C++で文字列の部分文字列の総数を求める方法を解説
この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文