C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のstrpbrk()関数とは?使い方とサンプルコードを解説

strpbrk()はC++の標準ライブラリ(<cstring>ヘッダ)に含まれる文字列関数の一つです。2つの文字列を受け取り、第1引数の文字列(str1)の中に、第2引数の文字列(str2)に含まれるいずれかの文字が最初に出現する位置を探します。

一致する文字が見つかった場合は、その文字へのポインタを返します。見つからなかった場合や、終端のNULL文字(ヌルターミネータ)に到達した場合はNULLを返します。なお、この関数は終端のNULL文字自体を比較対象にはしません。

strpbrk()の構文

char *strpbrk(const char *str1, const char *str2)

上記の構文において、strpbrk()は「str2内のいずれかの文字と一致する、str1内の最初の文字」へのポインタを返します。

strpbrk()の使用例

実際にstrpbrk()を使ったサンプルプログラムを見てみましょう。

#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char str1[20] = "aeroplane";
    char str2[20] = "fun";
    char *c;
    c = strpbrk(str1, str2);
    if (c != 0)
    cout<<"First matching character in str1 is "<< *c <<" at position "<< c-str1+1;
    else
    printf("Character not found");
    return 0;
}

実行結果

First matching character in str1 is n at position 8

プログラムの解説

このプログラムでは、まず2つの文字列str1("aeroplane")とstr2("fun")を定義しています。次に、strpbrk()の戻り値である「str1内の一致した文字へのポインタ」をポインタ変数cに格納します。

cの値がNULL(0)でなければ、一致した文字と、その文字がstr1内の何番目に位置するかを表示します。位置の計算には「c - str1 + 1」というポインタ演算を使用しており、これにより先頭を1番目とした位置が求められます。

一方、cがNULLの場合は、str2のどの文字もstr1に存在しないことを意味するため、「Character not found(文字が見つかりません)」と表示されます。

該当するコード部分は以下の通りです。

char str1[20] = "aeroplane";
char str2[20] = "fun";
char *c;
c = strpbrk(str1, str2);
if (c != 0)
cout<<"First matching character in str1 is "<<*c <<" at position "<< c-str1+1;
else
printf("Character not found");

まとめ

strpbrk()は、ある文字列の中から特定の文字セットに含まれる文字を効率的に検索したい場合に便利な関数です。戻り値はポインタであるため、見つかった位置以降の文字列処理にもそのまま活用できます。文字列検索処理を実装する際の選択肢として覚えておくと良いでしょう。

  1. C++のiscntrl()関数とは?制御文字の判定方法をわかりやすく解説

    C++のiscntrl()関数は、指定された文字が制御文字(コントロール文字)であるかどうかを判定するための関数です。この関数は ctype.h ヘッダーファイル内で定義されており、改行(\n)やタブ(\t)など、画面に直接表示されない特殊な文字をチェックする際に活用されます。iscntrl()関数の構文iscntrl()関数の基本的な構文は以下のとおりです。int iscntrl ( int ch );引数 ch には、判定対象となる文字を渡します。文字が制御文字であれば0以外の値(真)を返し、制御文字でなければ0(偽)を返します。例1:文字列に含まれる制御文字の数をカウントする次のプログラ

  2. C++のstrstr()関数とは?文字列内の部分文字列検索方法を解説

    C++のstrstr()関数は、ヘッダーファイル string.h で定義されている標準関数の一つです。この関数は、ある文字列の中から特定の部分文字列(サブストリング)を検索し、その最初の出現位置を見つけるために使用されます。文字列の照合は終端文字「\0」で停止し、「\0」自体は検索対象に含まれません。 strstr()関数の構文 strstr()関数の構文は以下の通りです。 char *strstr( const char *str1, const char *str2) 上記の構文では、strstr()は文字列 str1 の中から文字列 str2 が最初に出現する位置を検索します。見つかっ