首頁 > 後端開發 > C++ > 如何有效地解析 C 中的字串標記?

如何有效地解析 C 中的字串標記?

Barbara Streisand
發布: 2024-11-14 11:28:02
原創
1030 人瀏覽過

How Can I Efficiently Parse String Tokens in C  ?

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

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