C を使用する場合、文字列をトークン化して、文字列をより小さな部分文字列またはトークンに分割することが望ましいことがよくあります。デリミタ。 C 関数 strtok() は文字列をトークン化するための一般的なオプションですが、 char* 入力が必要ですが、 C では std::string が推奨される文字列型です。この記事では、std::string で strtok() を使用する回避策を検討します。
1 つの方法は、istringstream オブジェクトを使用して std::string を次のように変換することです。文字のストリーム。strtok() によってトークン化できます。例:
#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 iss が std::string myText から構築されます。次に、std::getline 関数を使用して、区切り文字 '-' を区切り文字として使用してストリームからトークンを抽出します。各トークンは、std::cout を使用してコンソールに出力されます。
応答で言及されているもう 1 つのオプションは、より柔軟なトークン化機能を提供する Boost ライブラリを使用することです。ただし、このソリューションでは、Boost ライブラリがシステムにインストールされている必要があります。
以上がC で strtok() を使用して std::string をトークン化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。