ホームページ > バックエンド開発 > C++ > C で文字列を文字列のベクトルに分割するにはどうすればよいですか?

C で文字列を文字列のベクトルに分割するにはどうすればよいですか?

DDD
リリース: 2024-12-30 19:33:10
オリジナル
302 人が閲覧しました

How Can I Split a String into a Vector of Strings in C  ?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート