使用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中文網其他相關文章!