首頁 >後端開發 >C++ >如何使用 strtok() 標記 C 字串而不出現錯誤?

如何使用 strtok() 標記 C 字串而不出現錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-06 13:03:02673瀏覽

How to Tokenize a C   String Using strtok() Without Errors?

使用strtok() 標記C 字串

要使用帶有std::string 的strtok() 標記字串,必須進行轉換將其轉換為C 樣式字串(char)。但是,使用 str.c_str() 直接將 std::string 轉換為 const char 可能會導致錯誤。

解決方案 1:使用 istringstream

另一種方法是使用 istringstream 從 std::string 讀取。以下是範例:

#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;
}

此方法只是循環遍歷 istringstream,根據 getline() 中指定的分隔符號將字串分解為標記。

解決方案2:使用Boost工具包

或者,可以使用Boost 工具包的tokenizer 類別來獲得更大的靈活性和對標記化參數的控制。這是使用 Boost 的範例:

#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>

int main() {
    std::string myText("some-text-to-tokenize");
    boost::tokenizer<> tokenizer(myText, "-");
    for (auto token : tokenizer) {
        std::cout << token << std::endl;
    }
    return 0;
}

以上是如何使用 strtok() 標記 C 字串而不出現錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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