Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24615
  • 博文数量: 13
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-24 15:55
文章分类
文章存档

2008年(13)

我的朋友
最近访客

分类: WINDOWS

2008-06-08 22:30:35

//分开字符串
//编译方法: 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<    }
*******************************************
阅读(735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~