strtok() を使用した C 文字列のトークン化
std::string で strtok() を使用して文字列をトークン化するには、変換する必要がありますそれを C スタイルの文字列 (char) に変換します。ただし、str.c_str() を使用して std::string を const char に直接変換すると、エラーが発生する可能性があります。
解決策 1: isstringstream を使用する
別のアプローチは、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 を使用するToolkit
または、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 中国語 Web サイトの他の関連記事を参照してください。