【C++】實現JAVA中的split方法

JAVA中的split函數可謂相當好用,可惜我沒在C++中找到類似方法...於是乎我在網上找到了兩種自己實現的函數,簡單介紹下,之後進行簡單比較討論:

常規方法:

vector<string> split(string str){  
    int start=0, end=0, size=str.size();  
    vector<string> result;  
    for (end=0; end<size; ++end) {  
        if (str[end]==' ') {  
            if (end>start) { // Avoid the multi-' ' situation  
                string newStr=str.substr(start,end-start);  
                result.push_back(newStr);  
            }  
            start=end+1;  
        }  
    }  
    if (end>start) {  
        string newStr=str.substr(start,end-start);  
        result.push_back(newStr);  
    }  
    return result;  
}  

利用stringstream的非常規方法:

vector<string> split(string str){  
    stringstream ss;  
    ss<<str;  
    string words;  
    vector<string> result;  
    while (ss>>words) {  
        result.push_back(words);  
    }  
    return result;  
}  

比較:第一種方法將 str[end]=' ' 中的空格替換成其他字符也可行,比價靈活;而第二種方法利用了stringstream自動識別丟棄空格的特性進行分裂,劣勢很顯然,只能分割以空格作爲中間字符的字符串。可以根據具體情況靈活選用。

關於stringstream的方法參考鏈接:https://blog.csdn.net/sophia1224/article/details/53054698

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章