今天工作因原因,需要實現(xiàn)一個split的功能,以前也做過,但一直沒有把他記下來,所以又重新寫了一次。這次做個筆記以備后用,各位網(wǎng)友感興趣也可以直接拿來用過。
例子: 一個這樣的字符串:“123,456,789,0”。把他截取成這樣的字符串數(shù)組 [123],[456],[789],[0]。眾所周知c++默認沒有提供這樣功能的函數(shù),下面我們自己來實現(xiàn)它 不多說直接上代碼: #include <iostream>
#include <string> #include <vector> #include <TCHAR.H> using namespace std; vector<string> splitEx(const string& src, string separate_character) { vector<string> strs; int separate_characterLen = separate_character.size();//分割字符串的長度,這樣就可以支持如“,,”多字符串的分隔符 int lastPosition = 0,index = -1; while (-1 != (index = src.find(separate_character,lastPosition))) { strs.push_back(src.substr(lastPosition,index - lastPosition)); lastPosition = index + separate_characterLen; } string lastString = src.substr(lastPosition);//截取最后一個分隔符后的內(nèi)容 if (!lastString.empty()) strs.push_back(lastString);//如果最后一個分隔符后還有內(nèi)容就入隊 return strs; } int _tmain(int argc, _TCHAR* argv[]) { // string s = "$ T3,E797.7,Ta16.8,Tc17.9,L7*"; string s = "123,456,789,0,888"; string del = ","; vector<string> strs = splitEx(s, del); for ( unsigned int i = 0; i < strs.size(); i++) { cout << strs[i].c_str() << endl; } return 0; } 輸出: 123 456 789 0 888 PS:純粹個人使用,沒有經(jīng)過嚴格測試,也許還有一些考慮不周的地方,歡迎大家指出。 |
|