boost::split:可根据字符或者字符串来切割字符串
头文件:
#include <boost/algorithm/string.hpp>
实例:
①根据一个字符进行切割
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
int main()
{
string test = "i am a student,you are a teacher!";
vector<string> vec;
boost::split(vec, test,boost::is_any_of(","), boost::token_compress_on);
for(int i = 0; i < vec.size(); ++i)
{
cout<<vec[i]<<endl;
}
return 0;
}
会根据字符将字符串进行切割
结果:
[root@localhost6 tmp]# ./test
i am a student
you are a teacher!
②根据多个字符进行切割
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
int main()
{
string test = "i am a student,you are a teacher!";
vector<string> vec;
boost::split(vec, test,boost::is_any_of(" ,"), boost::token_compress_on);
for(int i = 0; i < vec.size(); ++i)
{
cout<<vec[i]<<endl;
}
return 0;
}
会根据空格与引号将字符串进行切割,每遇到一次切割一次。
结果:
[root@localhost6 tmp]# ./test
i
am
a
student
you
are
a
teacher!
③根据字符串(也就是根据多个字符)
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
using namespace std;
int main()
{
string test = "i am a student<>you are a teacher!";
vector<string> vec;
boost::split(vec, test,boost::is_any_of("<>"), boost::token_compress_on);
for(int i = 0; i < vec.size(); ++i)
{
cout<<vec[i]<<endl;
}
return 0;
}
根据<>进行切割,对于确定字符串中没有<或者>可以使用,否则会根据<,>进行切割。
结果:
[root@localhost6 tmp]# ./test
i am a student
you are a teacher!