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

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

substr+引数2つ 文字列の一部を取得する
substr+引数1つ 文字列の途中から最後までを取得する
substr+length 文字列の後ろから取得する

文字列の一部を取得する

文字列.substr(開始位置,長さ)
  • 1つめの引数の「開始位置」から2つめの引数の「長さ」で文字を返します。
  • 最初の1文字目の位置は0です。

文字列の一部を取得するサンプルです。

#include <iostream>
using namespace std;


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

	cout << str1.substr(0, 1) << endl; //a
	cout << str1.substr(1, 1) << endl; //b
	cout << str1.substr(2, 1) << endl; //c

	cout << str1.substr(0, 2) << endl; //ab
	cout << str1.substr(1, 2) << endl; //bc

	string str2 = "あいうえお";

	cout << str2.substr(0, 2) << endl; //あ
	cout << str2.substr(2, 2) << endl; //い

	return 0;
}

8~10行目は、指定の位置から1文字取得しています。
12,13行目は、2文字取得しています。
17,18行目は、日本語の文字です。1文字を長さ2で取得しています。

文字列の途中から最後までを取得する

文字列.substr(開始位置)
  • 1つめの引数の開始位置から最後までの文字を返します。

文字列の途中から最後までを取得するサンプルです。

#include <iostream>
using namespace std;


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

	cout << str1.substr(1) << endl; //bcde
	cout << str1.substr(2) << endl; //cde
	cout << str1.substr(3) << endl; //de

	string str2 = "あいうえお";

	cout << str2.substr(2) << endl; //いうえお
	cout << str2.substr(4) << endl; //うえお

	return 0;
}

指定した位置の文字から最後の文字まで取得しています。

文字列の後ろから取得する

文字列の後ろから取得するサンプルです。length関数を使用します。

#include <iostream>
using namespace std;


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

	cout << str1.substr(str1.length() - 1) << endl; //e
	cout << str1.substr(str1.length() - 2) << endl; //de
	cout << str1.substr(str1.length() - 3) << endl; //cde

	string str2 = "あいうえお";

	cout << str2.substr(str2.length() - 2) << endl; //お
	cout << str2.substr(str2.length() - 4) << endl; //えお

	return 0;
}

length関数で文字列の長さを取得し、そこから引くことで後ろから文字列を取得しています。

関連の記事

C++ if文のサンプル
C++ 文字列の位置を取得(find/rfind)

△上に戻る