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

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

はじめに

wcspbrk()関数は、C/C++に標準で組み込まれているライブラリ関数の一つです。あるワイド文字列の中から、別のワイド文字列に含まれる任意のワイド文字(文字セット)を検索するために使用されます。この関数は、<cwchar>ヘッダーファイル内で宣言されています。

関数の基本構文

wchar_t* wcspbrk(const wchar_t* dest, const wchar_t* src);

引数について

この関数は2つの引数を受け取ります。

  • 第1引数(dest):検索対象となるNULL終端のワイド文字列を指定します。
  • 第2引数(src):検索したい文字を含むNULL終端のワイド文字列を指定します。

戻り値

戻り値は以下の2通りです。

  • dest内にsrcのいずれかのワイド文字が1つ以上存在する場合、最初に一致したワイド文字へのポインタを返します。
  • 一致する文字が1つも見つからなかった場合は、NULLポインタを返します。

サンプルコード

次の例では、文字列中に含まれる母音(a・i・u・e・o)をすべて検索して出力しています。

#include <cwchar>
#include <iostream>
using namespace std;

int main () {
    wchar_t wcs[] = L"Hello World. This is C++ PROGRAM.";
    wchar_t key[] = L"aeiouAEIOU";
    wchar_t * pwc;

    wcout << L"Vowels in '" << wcs << "': ";

    pwc = wcspbrk (wcs, key);
    while (pwc != NULL) {
        wcout << *pwc << L" ";
        pwc = wcspbrk (pwc+1, key);
    }
    wcout << L"\n";
}

実行結果

Vowels in 'Hello World. This is C++ PROGRAM.': e o o i i O A

プログラムの解説

このサンプルコードでは、まずwcspbrk(wcs, key)を呼び出して、文字列wcsの中で最初に現れる母音を探しています。見つかった場合はその文字を出力し、続けてポインタを1つ進めて(pwc+1)再度wcspbrk()を呼び出すことで、残りの部分から次の母音を順番に検索していきます。一致する文字がなくなるとNULLポインタが返されるため、whileループが終了します。

実行結果からもわかるように、「Hello World. This is C++ PROGRAM.」という文字列には、e、o、o、i、i、O、Aという7つの母音が含まれていることが確認できます。

まとめ

wcspbrk()関数は、ワイド文字列から特定の文字セットを効率的に検索できる便利な標準ライブラリ関数です。マルチバイト文字やUnicodeを扱う際に役立ちますので、ぜひ活用してみてください。

  1. C/C++のmbsrtowcs()関数とは?構文・パラメータ・戻り値と実例を解説

    本記事では、C++ STLに含まれるstd::mbsrtowcs()関数の仕組み、構文、および具体的な使用例について詳しく解説します。 std::mbsrtowcs()とは? std::mbsrtowcs()は、C++ STLに組み込まれている関数で、<cwchar>ヘッダーファイル内で定義されています。関数名のmbsrtowcs()は「multibyte string to wide character string(マルチバイト文字列からワイド文字列への変換)」を意味し、再開可能な変換状態を維持しながら、NULL終端されたマルチバイト文字列をワイド文字列表現へと変換します。この

  2. C/C++のsystem()関数とは?使い方と実行例を徹底解説

    この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int