名前空間
変種
操作

std::wcstok

提供: cppreference.com
< cpp‎ | string‎ | wide
ヘッダ <cwchar> で定義
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);

str の指すヌル終端ワイド文字列内の次のトークンを探します。 区切り文字は delim の指すヌル終端ワイド文字列によって表されます。

この関数は同じ文字列から連続するトークンを取得するために複数回呼ばれるように設計されています。
  • str != NULL の場合、その呼び出しはこの特定のワイド文字列に対する std::wcstok の初回の呼び出しとして扱われます。 delim に含まれない最初のワイド文字を検索します。
  • そのようなワイド文字が見つからなかった場合、 str にはトークンがまったくなく、ヌルポインタが返されます。
  • そのようなワイド文字が見つかった場合、それは「トークンの開始位置」です。 その位置から delim に含まれ最初のワイド文字を検索します。
  • そのようなワイド文字が見つからなかった場合、 str はトークンを1個だけ持ち、 std::wcstok の以後の呼び出しはヌルポインタを返します。
  • そのようなワイド文字が見つかった場合、それはヌルワイド文字 L'\0'置き換えられ、解析状態 (一般的にはその次のワイド文字を指すポインタ) がユーザ提供の位置 *ptr に格納されます。
  • その後、トークンの開始位置を指すポインタが返されます。
  • str == NULL の場合、その呼び出しは std::wcstok の2回目以降の呼び出しとして扱われます。 この関数は前回同じ *ptr で呼び出した残りの場所から続きを行います。 前回検出されたトークンの次のワイド文字を指すポインタが str に渡されたかのように動作します。

目次

[編集] 引数

str - トークン化するヌル終端ワイド文字列を指すポインタ
delim - 区切り文字を表すヌル終端ワイド文字列を指すポインタ
ptr - 内部状態を格納するために wcstok が使用する wchar_t* 型のオブジェクトを指すポインタ

[編集] 戻り値

次のトークンの開始位置を指すポインタ、またはこれ以上トークンがなければヌルポインタ。

[編集] ノート

この関数は破壊的です。 文字列 str の要素に L'\0' 文字を書き込みます。 特に、ワイド文字列リテラルを std::wcstok の第1引数として使用することはできません。

std::strtok と異なり、この関数は静的記憶域を更新しません。 解析状態はユーザ定義の位置に格納されます。

他のほとんどのトークナイザと異なり、 std::wcstok の区切り文字はトークンごとに異なってもよく、前のトークンの内容に依存することもできます。

[編集]

#include <cwchar>
#include <iostream>
 
int main()
{
    wchar_t input[100] = L"A bird came down the walk";
    wchar_t* buffer;
    wchar_t* token = std::wcstok(input, L" ", &buffer);
    while (token) {
        std::wcout << token << '\n';
        token = std::wcstok(nullptr, L" ", &buffer);
    }
}

出力:

A
bird
came
down
the
walk

[編集] 関連項目

バイト文字列中の次のトークンを探します
(関数) [edit]