前提条件
このチュートリアルの例を確認する前に、g ++コンパイラがシステムにインストールされているかどうかを確認する必要があります。 Visual Studio Codeを使用している場合は、必要な拡張機能をインストールして、C ++ソースコードをコンパイルして実行可能コードを作成します。ここでは、Visual StudioCodeアプリケーションを使用してC ++コードをコンパイルおよび実行しています。
構文
string substr(size_t pos = 0、size_t len = npos)const;
ここで、最初の引数にはサブストリングが開始される開始位置が含まれ、2番目の引数にはサブストリングの長さが含まれます。有効な開始位置と長さが指定されている場合、関数はサブ文字列を返します。この関数のさまざまな使用法は、このチュートリアルの次の部分で示されています。
例1:substr()の簡単な使用
次の例は、substr()関数の最も一般的で単純な使用法を示しています。次のコードを使用してC ++ファイルを作成し、文字列値から部分文字列を生成します。複数の単語の文字列が文字列変数に割り当てられました。次に、有効な開始位置とサブ文字列の長さは、substr()関数の引数値にあります。コードの実行後、元の文字列とサブ文字列の両方が出力されます。
//必要なライブラリを含める
#含む
#含む
int主要(()。 {{
//文字列変数を定義します
時間:::ストリングoriginalstr=「Linuxhintへようこそ」;
// substr()を使用してサブ文字列を切り取ります
時間:::ストリングnewstr=originalstr。substr ((十一、9)。;
//元の文字列を印刷します
時間:::費用 <<「元の文字列は:」 <<originalstr<< 'NS';
//サブ文字列を出力します
時間:::費用 <<「部分文字列は:」 <<newstr<< 'NS';
戻る 0;
}
出力:
コードによると、元の文字列は「 LinuxHintへようこそ ‘。 11は「L」文字の位置であるサブ文字列の開始位置として指定され、9はサブ文字列の長さの値として指定されています。 ‘ LinuxHint ‘は、コードの実行後にsubstr()関数の出力として返されました。
例2:特定の文字列の位置に基づいてsubstr()を使用する
次のコードは、特定の文字列の位置を検索した後、サブ文字列を生成します。次のコードを使用してC ++ファイルを作成し、コードをテストします。複数の単語の文字列値がコードで定義されています。次に、find()関数を使用して、特定の文字列の位置がメイン文字列内で検索されます。 substr()関数は、文字列の先頭からfind()関数によって返される位置の値までのサブ文字列を生成するために使用されています。
//必要なライブラリを含める#含む
#含む
を使用して 名前空間時間;
int主要(()。
{{
時間:::ストリングstrData= 「私はC ++プログラミングが好きです」;
// str.find()を使用して '-'の位置を見つけましょう
intポジション=strData。探す(('プログラミング')。;
//このパターンまで部分文字列を取得します
時間:::ストリングnewstr=strData。substr((0、 ポジション)。;
時間:::費用 <<strData<< 'NS';
時間:::費用 <<newstr<< 'NS';
戻る 0;
}
出力:
コードによると、主な文字列値は、 私はC ++プログラミングが好きです 検索文字列の値は、 ‘ プログラミング' それはメイン文字列に存在します。したがって、出力は次のようになります。 私はC ++が好きです ‘コードを実行した後。
例3:例外処理でsubstr()を使用する
substr()関数は、次のコードで例外処理とともに使用されています。 substr()関数で無効な開始位置が指定された場合、例外が生成されます。次のコードを使用してC ++ファイルを作成し、コードをテストします。 tryブロックでは、1ワードの文字列値が割り当てられており、substr()関数で無効な開始位置が使用されているため、例外が発生してエラーメッセージが出力されます。
//必要なライブラリを含める#含む
#含む
int主要(()。 {{
試す{{
//文字列変数を定義します
時間:::ストリングoriginalstr=「Linuxヒント」;
// substr()を使用して部分文字列を切り取ります
時間:::ストリングnewstr=originalstr。substr ((十一、9)。;
//サブ文字列を出力します
時間:::費用 <<「部分文字列は:」 <<newstr<< 'NS';
}
キャッチ ((const時間:::out_of_range)。 {{
時間:::cerr << '位置が範囲外です。NS';
}
戻る 0;
}
出力:
コードによると、主な文字列値は、 LinuxHint 開始位置の値は11であり、存在しません。そのため、例外が生成され、コードの実行後にエラーメッセージが出力されました。
例4:substr()を使用して文字列を分割する
次の例は、substr()関数を使用して、区切り文字に基づいて文字列を分割する方法を示しています。 find()関数を使用して区切り文字の位置を検索し、erase()関数を使用して、区切り文字を含む分割された文字列をメイン文字列から削除しました。 「while」ループは、メイン文字列内の区切り文字のすべての位置を検索し、分割された値をベクトル配列に格納するために使用されています。次に、ベクトル配列の値が出力されました。
//必要なライブラリを含める#含む
#含む
#含む
int主要(()。{{
//文字列を定義します
時間:::ストリングstringData= 「PHP:C ++:Python:」;
//セパレータを定義します
時間:::ストリングセパレーター= ':';
//ベクトル変数を宣言します
時間:::ベクター言語{{};
//整数変数を宣言します
intポジション;
//文字列変数を宣言します
時間:::ストリングoutstr;
/ *
substr()関数を使用して文字列を分割します
分割された単語をベクターに追加します
* /
その間 ((((ポジション=stringData。探す((セパレーター)。)。 !=時間:::ストリング:::npos)。 {{
言語。push_back((stringData。substr((0、 ポジション)。)。;
stringData。消去((0、 ポジション+セパレータ。長さ(()。)。;
}
//分割されたすべての単語を印刷します
にとって ((const 自動 &outstr:言語)。 {{
時間:::費用 <<outstr<<時間:::endl;
}
戻る 0;
}
出力:
コードによると、主な文字列値は PHP:C ++:Python 区切り文字の値は、「 : ’ 。上記のスクリプトを実行すると、次の出力が表示されます。
結論
substr()関数を使用する主な目的は、開始位置とサブ文字列の長さを指定することにより、文字列からサブ文字列を取得することです。このチュートリアルでは、この関数のさまざまな使用法について、新しいC ++ユーザーがコードで適切に使用できるように、複数の例を使用して説明しています。