//分开字符串
//编译方法: g++ -o reg_split -lboost-regex-gcc reg_split.cpp
#include
#include
unsigned tokenise(std::list& l, std::string& s)
{
return boost::regex_split(std::back_inserter(l), s);
}
#include
using namespace std;
#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550))
//
// problem with std::getline under MSVC6sp3
istream& getline(istream& is, std::string& s)
{
s.erase();
char c = is.get();
while(c != '\n')
{
s.append(1, c);
c = is.get();
}
return is;
}
#endif
int main(int argc)
{
string s;
list l;
do{
if(argc == 1)
{
cout << "Enter text to split (or \"quit\" to exit): ";
getline(cin, s);
if(s == "quit") break;
}
else
s = "This is a string of tokens";
unsigned result = tokenise(l, s);
cout << result << " tokens found" << endl;
cout << "The remaining text is: \"" << s << "\"" << endl;
while(l.size())
{
s = *(l.begin());
l.pop_front();
cout << s << endl;
}
}while(argc == 1);
return 0;
}
******************************************
string s="1:2:3";
string temp;
boost::regex pat(":");
list l;
boost::regex_split(std::back_inserter(l),s,pat);
while(l.size()){
s = *(l.begin());
l.pop_front();
cout< }
*******************************************
阅读(1665) | 评论(0) | 转发(0) |