首頁  >  文章  >  後端開發  >  如何在不使用“strtok()”的情況下標記“std::string”?

如何在不使用“strtok()”的情況下標記“std::string”?

Susan Sarandon
Susan Sarandon原創
2024-11-07 18:34:03909瀏覽

How to Tokenize a `std::string` Without Using `strtok()`?

使用 strtok 標記 std::string

可以使用多種方法來標記 std::string。一種常見的方法是使用 C 函數 strtok(),它將字元數組作為輸入,並根據指定的分隔符號將其分解為標記。然而,std::string 物件不能直接傳遞給 strtok(),因為它們不指向字元陣列。

為了克服這個限制,我們可以用另一種方​​法來標記 std::string。其中一種方法是使用 istringstream 對象,該物件可以透過將 std::string 傳遞給其建構函式來建立。然後,istringstream 物件可用於使用 getline() 函數從字串中讀取標記,該函數將分隔符號作為第二個參數。

#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;
    while (std::getline(iss, token, '-')) {
        std::cout << token << std::endl;
    }
    return 0;
}

在此範例中,istingstream 物件用於讀取std::string 將「some-text-to-tokenize」轉換為一系列標記,由「-」字元分隔。 getline() 函數用於從字串中提取每個標記,然後將標記列印到控制台。

使用 istringstream 的另一種方法是使用 Boost.Tokenizer 等實用程序,它提供一種更靈活和可自訂的字串標記方法。然而,istingstream 方法通常足以滿足基本的標記化需求。

以上是如何在不使用“strtok()”的情況下標記“std::string”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn