在C 中高效解析字串標記
為了有效地將字串拆分為由特定分隔符分隔的標記,C提供了強大的機制。例如,如果您的字串由分號(;) 分隔的單字組成,您可以採用以下策略:
使用std::getline()
std ::getline() 函數提供了一個簡單而通用的方法。它可以處理任何類型的分隔符,使其適用於提取行和標記。下面是一個範例:
#include <sstream> #include <iostream> #include <vector> using namespace std; int main() { vector<string> strings; istringstream f("denmark;sweden;india;us"); string s; while (getline(f, s, ';')) { cout << s << endl; strings.push_back(s); } }
此程式碼初始化一個字串和一個向量。然後,它使用 getline() 迭代該字串,並在每個分號處將其分割。每個標記都會被列印並添加到向量中。
自訂分割函數
或者,您可以建立一個自訂函數來處理標記化:
#include <string> #include <vector> using namespace std; vector<string> split(const string& str, char delimiter) { vector<string> tokens; string token; istringstream iss(str); while (getline(iss, token, delimiter)) { tokens.push_back(token); } return tokens; }
該函數接受一個字符串和一個分隔符號作為輸入,並傳回一個標記向量。它的操作與 getline() 類似,但提供了使用任何分隔符號的靈活性。
其他注意事項
使用字串時,遵守安全準則至關重要。 C 風格的字串函數和 Boost 等開源函式庫可能會產生安全隱患。因此,建議依賴標準 C 函數,如 std::getline() 或實作自訂拆分邏輯。
以上是如何有效地解析 C 中的字串標記?的詳細內容。更多資訊請關注PHP中文網其他相關文章!