首頁 > 後端開發 > 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 函式庫,您可以利用其強大的字串演算法庫。 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 的用於字串操作的標準函式庫函數。一種方法是使用“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' 並添加每個子字符串到“字”向量。

常規表達式

另一個選擇是使用正規表示式來分割字串。正規表示式可以提供一種強大而靈活的方式來執行複雜的字串操作:

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 ' 分割為逗號,再次將每個子字串加入「單字」中向量。

結論

將字串分割為字串向量的最佳方法取決於您的特定要求。如果您需要強大且多功能的解決方案,強烈推薦 Boost 字串演算法庫。對於標準 C 實現,請考慮使用“find”和“substr”函數或正規表示式。

以上是如何在 C 中將字串拆分為字串向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板