std::string のトークン化は、さまざまな方法を使用して実行できます。一般的なアプローチの 1 つは、C 関数 strtok() を使用することです。これは、文字配列を入力として受け取り、指定された区切り文字に基づいてトークンに分割します。ただし、std::string オブジェクトは文字配列を指していないため、strtok() に直接渡すことはできません。
この制限を克服するには、別の方法を使用して std::string をトークン化できます。そのような方法の 1 つは、istringstream オブジェクトを使用することです。このオブジェクトは、std::string をコンストラクターに渡すことによって作成できます。その後、getline() 関数を使用して、istringstream オブジェクトを使用して文字列からトークンを読み取ることができます。この関数は 2 番目の引数として区切り文字を受け取ります。
#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 オブジェクトを使用して、 std::string "some-text-to-to-tokenize" を、"-" 文字で区切られた一連のトークンに変換します。 getline() 関数を使用して文字列から各トークンを抽出し、トークンがコンソールに出力されます。
istringstream を使用する代わりに、Boost.Tokenizer などのユーティリティを使用することもできます。文字列をトークン化するための、より柔軟でカスタマイズ可能なアプローチ。ただし、通常、基本的なトークン化のニーズには isstringstream アプローチで十分です。
以上が「strtok()」を使用せずに「std::string」をトークン化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。