C++ 中的wcstok() 函數以空字符結尾的寬字符串返回下一個標記。
wcstok() 函數在<cwchar> 頭文件中定義。
wcstok()原型
wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);
wcstok() 函數接受三個參數:str、delim 和 ptr。此函數在 str 指向的寬字符串中查找標記。指針 delim 指向分隔符。
可以多次調用此函數以從同一寬字符串中獲取令牌。有兩種情況:
- 如果 str 不為 NULL:
對wcstok() 的調用被視為對該寬字符串的第一次調用。該函數搜索不包含在 delim 中的第一個寬字符。如果沒有找到這樣的寬字符,則寬字符串不包含任何標記。所以返回一個空指針。
如果找到這樣的寬字符,該函數將從那裏搜索出現在 delim 中的寬字符。如果沒有找到分隔符,則 str 隻有一個標記。如果找到分隔符,則將其替換為 L'\0',並將指向下一個字符的指針存儲在 *ptr 中。最後,該函數返回指向標記開頭的指針。 - 如果 str 為 NULL:
該調用被視為對 wcstok 的後續調用,並且該函數使用相同的 *ptr 從它在先前調用中離開的位置繼續。
參數:
str
:指向要標記的空終止寬字符串的指針。delim
:指向包含分隔符的空終止寬字符串的指針。ptr
: 指向 wcstok 用來存儲其內部狀態的寬字符的指針。
返回:
- wcstok() 函數返回指向下一個標記開頭的指針(如果有)
- 如果找不到更多標記,則返回 NULL。
示例:wcstok() 函數如何工作?
#include <cwchar>
#include <clocale>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "en_US.utf8");
wchar_t str[] = L"parrot,owl,sparrow,pigeon,crow";
wchar_t delim[] = L"\u002c";// unicode for comma
wchar_t *ptr;
wcout << L"The tokens are:" << endl;
wchar_t *token = wcstok(str,delim,&ptr);
while (token)
{
wcout << token << endl;
token = wcstok(NULL,delim,&ptr);
}
return 0;
}
運行程序時,輸出將是:
The tokens are: parrot owl sparrow pigeon crow
相關用法
- C++ wcstok()用法及代碼示例
- C++ wcstold()用法及代碼示例
- C++ wcstod()用法及代碼示例
- C++ wcstof()用法及代碼示例
- C++ wcstol()用法及代碼示例
- C++ wcstombs()用法及代碼示例
- C++ wcstoull()用法及代碼示例
- C++ wcstoll()用法及代碼示例
- C++ wcstoul()用法及代碼示例
- C++ wcsftime()用法及代碼示例
- C++ wcscspn()用法及代碼示例
- C++ wcsncmp()用法及代碼示例
- C++ wcsstr()用法及代碼示例
- C++ wcsrchr()用法及代碼示例
- C++ wcsncpy()用法及代碼示例
- C++ wcslen()用法及代碼示例
- C++ wcsspn()用法及代碼示例
- C++ wcschr()用法及代碼示例
- C++ wcspbrk()用法及代碼示例
- C++ wcscat()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ wcstok()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。