需求:
解析文本,形如"|127.0.0.1|127.0.0.2|127.0.0.3|127.0.0.4|",从中获取有用的ip,并统计个数;
分析:
找到"|"即可;
代码:
#include <iostream>
#include <string>
#include <set>
using namespace std;
set<string> ips;
int parse_string(string info)
{
int index;
int cnt = 0;
string tmpinfo;
if (*(info.end() - 1) != '|')
{
cout << "出错" << endl;
return -1;
}
index = info.find_first_of("|", 0);
info = info.substr(index + 1);//去掉第一个包括“|”的前面的字符串
while (info.size() > 0)
{
index = info.find_first_of("|", 0);
tmpinfo = info.substr(0, index);//截取“|”之前的字符串,即ip
ips.insert(tmpinfo);
index = info.find_first_of("|", 0);
info = info.substr(index + 1);//去掉包括“|”的前面的字符串
}
}
int main()
{
string info = "|127.0.0.1|127.0.0.2|127.0.0.3|127.0.0.4|";
parse_string(info);
cout << "解析到的ip数量为" << ips.size() << endl;
set<string>::iterator nops;
cout << "分别为:" << endl;
for (nops = ips.begin(); nops != ips.end(); nops++)
{
cout << *nops << endl;
}
}
运行结果:
解析到的ip数量为4
分别为:
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4