std:: wcstok
From ja.cppreference.net
|
定義先ヘッダ
<cwchar>
|
||
|
wchar_t
*
wcstok
(
wchar_t
*
str,
const
wchar_t
*
delim,
wchar_t
**
ptr
)
;
|
||
ヌル終端ワイド文字列 str が指す文字列から次のトークンを検索します。区切り文字は、ヌル終端ワイド文字列 delim が指す文字列によって識別されます。
この関数は、同じ文字列から連続するトークンを取得するために複数回呼び出されるように設計されています。
-
-
str
!
=
nullptr
の場合、この特定のワイド文字列に対する
std::wcstokの最初の呼び出しとして扱われる。関数は delim に含まれ ない 最初のワイド文字を検索する。
-
- そのようなワイド文字が見つからなかった場合、 str にはトークンが全く存在せず、関数はヌルポインタを返す。
- そのようなワイド文字が見つかった場合、それは トークンの開始位置 となる。関数はその位置から、 delim に含まれる最初のワイド文字を検索する。
-
-
そのようなワイド文字が見つからなかった場合、
str
にはトークンが1つしかなく、将来の
std::wcstokの呼び出しはヌルポインタを返す。 - そのようなワイド文字が見つかった場合、それはヌルワイド文字 L ' \0 ' で 置換 され、パーサーの状態(通常は次のワイド文字へのポインタ)がユーザー提供の位置 * ptr に保存される。
-
そのようなワイド文字が見つからなかった場合、
str
にはトークンが1つしかなく、将来の
- その後、関数はトークンの開始位置へのポインタを返す。
-
str
==
nullptr
の場合、
std::wcstokの後続の呼び出しとして扱われる:関数は同じ * ptr を使用して、前回の呼び出しで中断した位置から処理を継続する。この動作は、最後に検出されたトークンの次のワイド文字へのポインタが str として渡された場合と同じである。
-
str
!
=
nullptr
の場合、この特定のワイド文字列に対する
目次 |
パラメータ
| str | - | トークン化するヌル終端ワイド文字列へのポインタ |
| delim | - | 区切り文字を識別するヌル終端ワイド文字列へのポインタ |
| ptr | - | wchar_t * 型のオブジェクトへのポインタ。wcstokが内部状態を保存するために使用 |
戻り値
次のトークンの先頭へのポインタ、またはこれ以上トークンがない場合はヌルポインタ。
注記
この関数は破壊的です:文字列
str
の要素に
L
'
\0
'
文字を書き込みます。特に、ワイド文字列リテラルを
std::wcstok
の第一引数として使用することはできません。
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
関連項目
|
バイト文字列内の次のトークンを検索する
(関数) |
|
|
C documentation
for
wcstok
|
|