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


C++ Implementing of strtok()用法及代碼示例


strtok()函數用於基於定界符標記字符串。它存在於頭文件“string.h”中,如果存在則返回指向下一個標記的指針,如果不存在下一個標記,則返回NULL。為了獲得所有令牌,其想法是循環調用此函數。

頭文件:

#include <string.h>

用法:

char *strtok(char *s1, const char *s2);

在本文中,我們將討論此函數的實現,其中必須考慮兩點:

  • 維護字符串的狀態,以確保我們已經提取了多少個令牌。
  • 其次,維護數組中提取的令牌列表以將其返回。

腳步:



  • 創建一個函數strtok(),該函數接受字符串和定界符作為參數並返回char指針。
  • 創建靜態變量輸入以維護字符串的狀態。
  • 檢查是否是第一次提取令牌,然後使用它初始化輸入。
  • 如果輸入為NULL並且提取了所有標記,則返回NULL。
  • 在此步驟中,開始提取令牌並將其存儲在數組result []中。
  • 現在,迭代循環直到出現NULL或定界符,然後通過包含'\ 0'返回結果。
  • 到達字符串的末尾時(如果需要),請手動添加“ \ 0”,並在末尾添加此小寫字母。

下麵是相同的實現:

C++

// C++ program to demonstrate the function 
// strtok() to tokenized the string 
#include <bits/stdc++.h> 
using namespace std; 
char* mystrtok(char* s, char d) 
{ 
    // Stores the state of string 
    static char* input = NULL; 
  
    // Initialize the input string 
    if (s != NULL) 
        input = s; 
  
    // Case for final token 
    if (input == NULL) 
        return NULL; 
  
    // Stores the extracted string 
    char* result = new char[strlen(input) + 1]; 
    int i = 0; 
  
    // Start extracting string and 
    // store it in array 
    for (; input[i] != '\0'; i++) { 
  
        // If delimeter is not reached 
        // then add the current character 
        // to result[i] 
        if (input[i] != d) 
            result[i] = input[i]; 
  
        // Else store the string formed 
        else { 
            result[i] = '\0'; 
            input = input + i + 1; 
            return result; 
        } 
    } 
  
    // Case when loop ends 
    result[i] = '\0'; 
    input = NULL; 
  
    // Return the resultant pointer 
    // to the string 
    return result; 
} 
  
// Driver Code 
int main() 
{ 
    // Given string str 
    char str[90] = "It, is my, day"; 
  
    // Tokenized the first string 
    char* ptr = mystrtok(str, ' '); 
  
    // Print current tokenized string 
    cout << ptr << endl; 
  
    // While ptr is not NULL 
    while (ptr != NULL) { 
        // Tokenize the string 
        ptr = mystrtok(NULL, ' '); 
  
        // Print the string 
        cout << ptr << endl; 
    } 
    return 0; 
}
輸出:
It,
is
my,
day




相關用法


注:本文由純淨天空篩選整理自NANDINIJAIN大神的英文原創作品 Implementing of strtok() function in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。