今天工作因原因,需要實(shí)現(xiàn)一個split的功能,以前也做過,但一直沒有把他記下來,所以又重新寫了一次。這次做個筆記以備后用,各位網(wǎng)友感興趣也可以直接拿來用過。
例子:
一個這樣的字符串:“123,456,789,0”。把他截取成這樣的字符串?dāng)?shù)組 [123],[456],[789],[0]。眾所周知c++默認(rèn)沒有提供這樣功能的函數(shù),下面我們自己來實(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)容就入隊(duì)
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)過嚴(yán)格測試,也許還有一些考慮不周的地方,歡迎大家指出。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。