當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


C++ wcstok()用法及代碼示例

C++ 中的wcstok() 函數以空字符結尾的寬字符串返回下一個標記。

wcstok() 函數在<cwchar> 頭文件中定義。

wcstok()原型

wchar_t* wcstok( wchar_t* str, const wchar_t* delim, wchar_t ** ptr);

wcstok() 函數接受三個參數:str、delim 和 ptr。此函數在 str 指向的寬字符串中查找標記。指針 delim 指向分隔符。

可以多次調用此函數以從同一寬字符串中獲取令牌。有兩種情況:

  1. 如果 str 不為 NULL:
    對wcstok() 的調用被視為對該寬字符串的第一次調用。該函數搜索不包含在 delim 中的第一個寬字符。如果沒有找到這樣的寬字符,則寬字符串不包含任何標記。所以返回一個空指針。
    如果找到這樣的寬字符,該函數將從那裏搜索出現在 delim 中的寬字符。如果沒有找到分隔符,則 str 隻有一個標記。如果找到分隔符,則將其替換為 L'\0',並將指向下一個字符的指針存儲在 *ptr 中。最後,該函數返回指向標記開頭的指針。
  2. 如果 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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。