C で文字列を文字列のベクトルに分割する
文字列をその構成部分に分割することは、プログラミングにおける一般的なタスクです。 C で文字列を扱う場合、文字列を文字列のベクトルに分割する必要が生じる場合があります。このタスクを実行するにはいくつかの方法がありますが、最も効率的で便利なアプローチはアプリケーションの特定の要件によって異なります。
ブースト アルゴリズム ライブラリ
を使用している場合Boost ライブラリを使用すると、その強力な文字列アルゴリズム ライブラリを活用できます。 Boost は、文字列を文字列のベクトルに簡単に分割できる「split」関数の堅牢な実装を提供します。次のコード スニペットは、Boost を使用して文字列を分割する方法を示しています。
#include <boost/algorithm/string/classification.hpp> // Include boost::for is_any_of #include <boost/algorithm/string/split.hpp> // Include for boost::split // ... std::vector<std::string> words; std::string s; boost::split(words, s, boost::is_any_of(", "), boost::token_compress_on);
この例では、'words' ベクトルには、指定された区切り文字 (カンマとスペース) で分割された各部分文字列が含まれます。さらに、「token_compress_on」により、連続する区切り文字が単一の区切り文字として扱われることが保証されます。
標準ライブラリ関数
Boost がオプションでない場合は、C を利用できます。文字列操作のための標準ライブラリ関数。 1 つの方法は、「find」関数を使用して各区切り文字を見つけてから、「substr」を使用して部分文字列を抽出することです。
std::vector<std::string> words; std::string s; for (size_t pos = 0; ; pos += len) { size_t len = s.find(",", pos); if (len == std::string::npos) { len = s.length() - pos; } words.push_back(s.substr(pos, len)); if (len == 0) break; }
このコード スニペットは、文字列 's' をカンマで分割し、各部分文字列を追加します。 「単語」ベクトルに変換します。
通常Expressions
もう 1 つのオプションは、正規表現を使用して文字列を分割することです。正規表現は、複雑な文字列操作を実行するための強力かつ柔軟な方法を提供します。
std::vector<std::string> words; std::string s; std::regex re(","); std::sregex_token_iterator it(s.begin(), s.end(), re, -1); std::sregex_token_iterator end; while (it != end) { words.push_back(*it); ++it; }
このコード スニペットでは、'std::regex' と 'std::sregex_token_iterator' を使用して文字列 's' を分割します。カンマ、再度各部分文字列を「単語」に追加しますVector.
結論
文字列を文字列のベクトルに分割するための最良の方法は、特定の要件によって異なります。強力で多用途のソリューションが必要な場合は、Boost 文字列アルゴリズム ライブラリを強くお勧めします。標準の C 実装の場合は、「find」および「substr」関数または正規表現の使用を検討してください。
以上がC で文字列を文字列のベクトルに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。