std::wcstok
提供: cppreference.com
ヘッダ <cwchar> で定義 | ||
wchar_t* wcstok(wchar_t* str, constwchar_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 !=NULL の場合、その呼び出しはこの特定のワイド文字列に対する
目次 |
[編集]引数
str | - | トークン化するヌル終端ワイド文字列を指すポインタ |
delim | - | 区切り文字を表すヌル終端ワイド文字列を指すポインタ |
ptr | - | 内部状態を格納するために wcstok が使用する wchar_t* 型のオブジェクトを指すポインタ |
[編集]戻り値
次のトークンの開始位置を指すポインタ、またはこれ以上トークンがなければヌルポインタ。
[編集]ノート
この関数は破壊的です。 文字列 str
の要素に L'\0' 文字を書き込みます。 特に、ワイド文字列リテラルを std::wcstok
の第1引数として使用することはできません。
std::strtok と異なり、この関数は静的記憶域を更新しません。 解析状態はユーザ定義の位置に格納されます。
他のほとんどのトークナイザと異なり、 std::wcstok
の区切り文字はトークンごとに異なってもよく、前のトークンの内容に依存することもできます。
[編集]例
Run this code
#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
[編集]関連項目
バイト文字列中の次のトークンを探します (関数) | |
wcstok の C言語リファレンス |