
C++ で文字列の一部を取得する方法:substr() 関数を徹底解説
C++ で文字列操作を行う上で、substr()
関数は必須のツールです。この関数を使うと、元の文字列から指定した部分文字列を簡単に取り出すことができます。この記事では、substr()
関数の基本的な使い方から応用例まで、詳しく解説します。
substr()
関数の基本
substr()
関数は、string
クラスのメンバ関数で、以下の構文で使用します。
string substr (size_t pos, size_t len) const;
pos
: 部分文字列の開始位置(インデックス番号)。len
: 部分文字列の長さ。- 戻り値: 新しく作成された
string
オブジェクト(部分文字列)。
size_t
は符号なし整数型です。
例:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "GeeksForGeeks";
string r = s1.substr(5, 4); // 5番目の文字から4文字切り出す
cout << "Substring: " << r << endl; // "ForG"
return 0;
}
この例では、s1
の 5 番目の文字 ("F") から始まり、4 文字分の部分文字列 ("ForG") が r
に格納されます。
substr()
関数の注意点
substr()
関数を使う際には、以下の点に注意が必要です。
- インデックスは 0 から始まる: 文字列の最初の文字は 0 番目のインデックスになります。
pos
が文字列長と等しい場合: 空の文字列が返されます。pos
が文字列長より大きい場合:out_of_range
例外がスローされます。len
が文字列長より大きい場合:[pos, size())
の範囲が返されます。len
が省略された場合:[pos, size())
の範囲が返されます。
substr()
関数の応用例
substr()
関数は、さまざまな文字列操作に役立ちます。以下にいくつかの例を示します。
-
特定の文字の後ろの文字列を取得: 文字列 "dog:cat" から ":" の後ろの "cat" を抽出します。
string s = "dog:cat"; int pos = s.find(":"); string sub = s.substr(pos + 1); cout << "Substring: " << sub << endl; // "cat"
-
特定の文字の前の文字列を取得: 文字列 "dog:cat" から ":" の前の "dog" を抽出します。
string s = "dog:cat"; int pos = s.find(":"); string sub = s.substr(0, pos); cout << "Substring: " << sub << endl; // "dog"
-
文字列のすべての部分文字列を生成: 文字列 "abc" のすべての部分文字列 ("a", "ab", "abc", "b", "bc", "c") を生成します。
substr()
関数に関連する C++ の知識
substr()
関数をより効果的に使用するために、以下の C++ の基本的な知識も理解しておくと良いでしょう。
- C++ のデータ型:
int
,string
,size_t
などのデータ型の役割を理解することで、substr()
関数に渡す引数の型を正しく選択できます。 - C++ の入出力:
cout
を使って結果を表示したり、cin
を使ってユーザーからの入力を受け取ったりする方法を知っておくと、substr()
関数を使ったプログラムをよりインタラクティブにできます。 - C++ の制御文:
if
文やfor
ループなどの制御文を組み合わせることで、substr()
関数を使ったより複雑な処理を実現できます。
まとめ
substr()
関数は、C++ で文字列を操作する上で非常に便利な機能です。この記事で紹介した基本的な使い方や応用例を参考に、substr()
関数を使いこなして、効率的な文字列処理を実現してください。