字符串分割
适用IP地址,日期,间隔符等字符串分割场景
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <set>
using namespace std;
const string DATE_DELIMITERS = "-";
const string IP_DELIMITERS = ".";
const string RECORD_DELIMITERS = "|";
void Split(const string &input, vector<string> &result, const string &delimter = " ")
{
int lastPos = input.find_first_not_of(delimter, 0);
int pos = input.find_first_of(delimter, lastPos);
while ((lastPos != string::npos) && (pos != string::npos)) {
result.push_back(input.substr(lastPos, pos - lastPos));
lastPos = input.find_first_not_of(delimter, pos );
pos = input.find_first_of(delimter, lastPos);
}
result.push_back(input.substr(lastPos));
}
void NormalizeDate(string &date)
{
vector<string> dateRes = {};
Split(date, dateRes, "-");
if (dateRes[1].length() < 2) {
dateRes[1] = "0" + dateRes[1];
}
if (dateRes[2].length() < 2) {
dateRes[2] = "0" + dateRes[2];
}
date= dateRes[0] + dateRes[1] + dateRes[2];
}
int main()
{
vector<string> result = {};
string input = "2021-3-1|192.168.1.100|index.htm|success";
Split(input, result, RECORD_DELIMITERS);
NormalizeDate(result[0]);
for (auto item : result) {
cout << item << endl;
}
return 0;
}
输出结果:
20210301
192.168.1.100
index.htm
success