std::wcstok
來自 cppreference.com
在標頭檔案 <cwchar> 中定義 |
||
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr); |
||
在 str 指向的以 null 結尾的寬字串中查詢下一個令牌。分隔符由 delim 指向的以 null 結尾的寬字串標識。
此函式設計為多次呼叫以從同一字串中獲取連續令牌。
- 如果 str != nullptr,則此呼叫被視為對此特定寬字串的第一次
std::wcstok
呼叫。函式搜尋第一個不包含在 delim 中的寬字元。
- 如果未找到此類寬字元,則 str 中根本沒有令牌,函式返回一個空指標。
- 如果找到了此類寬字元,它就是令牌的開頭。然後函式從該點開始搜尋第一個包含在 delim 中的寬字元。
- 如果未找到此類寬字元,則 str 只有一個令牌,並且對
std::wcstok
的未來呼叫將返回一個空指標。 - 如果找到此類寬字元,它將被替換為 null 寬字元 L'\0',並且解析器狀態(通常是指向以下寬字元的指標)儲存在使用者提供的位置 *ptr 中。
- 如果未找到此類寬字元,則 str 只有一個令牌,並且對
- 然後函式返回指向令牌開頭的指標。
- 如果 str == nullptr,則此呼叫被視為後續的
std::wcstok
呼叫:函式從上次呼叫中相同 *ptr 處繼續。其行為與將指向最後一個檢測到的令牌後面的寬字元的指標作為 str 傳遞時的行為相同。
- 如果 str != nullptr,則此呼叫被視為對此特定寬字串的第一次
目錄 |
[編輯] 引數
str | - | 指向要令牌化的以 null 結尾的寬字串的指標 |
delim | - | 指向標識分隔符的以 null 結尾的寬字串的指標 |
ptr | - | 指向型別為 wchar_t* 的物件的指標,wcstok 用它來儲存其內部狀態 |
[編輯] 返回值
指向下一個令牌開頭的指標,如果沒有更多令牌,則為空指標。
[編輯] 注意
此函式是破壞性的:它將 L'\0' 字元寫入字串 str 的元素中。特別是,寬字串文字不能用作 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 文件 用於 wcstok
|