今天工作因原因,需要實現一個split的功能,以前也做過,但一直沒有把他記下來,所以又重新寫了一次。這次做個筆記以備後用,各位網友感興趣也可以直接拿來用過。
例子:
一個這樣的字串:“123,456,789,0”。把他截取成這樣的字串數組 [123],[456],[789],[0]。眾所周知c++預設沒有提供這樣功能的函數,下面我們自己來實現它
不多說直接上代碼:
代碼
#include <iostream>
#include <string>
#include <vector>
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);//截取最後一個分隔字元後的內容
if (!lastString.empty())
strs.push_back(lastString);//如果最後一個分隔字元後還有內容就入隊
return strs;
}
int _tmain(int argc, _TCHAR* argv[])
{
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:純粹個人使用,沒有經過嚴格測試,也許還有一些考慮不周的地方,歡迎大家指出。