C++ 文字列の位置を取得(find/rfind)

C++の文字列の位置を取得するサンプルです。

目次

find 前から検索する
rfind 後から検索する

前から検索する

文字列.find(検索する文字列)
  • 文字列の先頭から検索して引数に指定した文字列が出現した位置を返します。
  • 1つ目の引数は、検索する文字列です。
  • 該当の文字がなかったときはstring::npos(4294967295)を返します。
  • 先頭の1文字目の位置は0です。

文字列の前から検索するサンプルです。

#include <iostream>
using namespace std;


int main() {
	string str1 = "abcde";

	cout << str1.find("a") << endl; //0
	cout << str1.find("b") << endl; //1
	cout << str1.find("c") << endl; //2
	cout << str1.find("abc") << endl; //0
	cout << str1.find("z") << endl; //4294967295

	if (str1.find("z") == string::npos) {
		cout << "存在しません" << endl; //存在しません
	}

	string str2 = "あいうえお";

	cout << str2.find("あ") << endl; //0
	cout << str2.find("い") << endl; //2
	cout << str2.find("う") << endl; //4

	return 0;
}

8~11行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
12行目は、該当の文字がないので4294967295が返ります。
この数値は、string::nposで比較できます。15行目は文字列が出力されます。
18行目は、変数に日本語の文字列を代入しています。
20~22行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。

後から検索する

文字列.rfind(検索する文字列)
  • 文字列の末尾から検索して引数に指定した文字列が出現した位置を返します。
  • 1つ目の引数は、検索する文字列です。
  • 該当の文字がなかったときはstring::npos(4294967295)を返します。
  • 先頭の1文字目の位置は0です

文字列の後ろから検索するサンプルです。

#include <iostream>
using namespace std;


int main() {
	string str1 = "abcabc";

	cout << str1.rfind("a") << endl; //3
	cout << str1.rfind("b") << endl; //4
	cout << str1.rfind("c") << endl; //5
	cout << str1.rfind("abc") << endl; //3
	cout << str1.rfind("z") << endl; //4294967295

	if (str1.rfind("z") == string::npos) {
		cout << "存在しません" << endl; //存在しません
	}

	string str2 = "あいうあいう";

	cout << str2.rfind("あ") << endl; //6
	cout << str2.rfind("い") << endl; //8
	cout << str2.rfind("う") << endl; //10

	return 0;
}

8~11行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。
12行目は、該当の文字がないので4294967295が返ります。
この数値は、string::nposで比較できます。15行目は文字列が出力されます。
18行目は、変数に日本語の文字列を代入しています。
20~22行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。

関連の記事

C++ 文字列の一部を取得するサンプル(substr)

△上に戻る