在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中文網其他相關文章!