std::string 常用函数

string replace(const string & str , const string & src , const string & dest )
{
        string ret;
       
        string:: size_type pos_begin = 0;
        string:: size_type pos       = str.find( src);
        while (pos != string::npos)
       {
              cout << "replacexxx:" << pos_begin <<" " << pos <<"\n";
              ret.append( str.data() + pos_begin, pos - pos_begin);
              ret += dest;
              pos_begin = pos + 1;
              pos       = str.find( src, pos_begin);
       }
        if (pos_begin < str.length())
       {
              ret.append( str.begin() + pos_begin, str.end());
       }
        return ret;
}

int split(const string & str , vector <string >& ret_, string sep = ",")
{
        if ( str.empty())
       {
               return 0;
       }
       
        string tmp;
        string:: size_type pos_begin = str.find_first_not_of( sep);
        string:: size_type comma_pos = 0;
       
        while (pos_begin != string::npos)
       {
              comma_pos = str.find( sep, pos_begin);
               if (comma_pos != string::npos)
              {
                     tmp = str.substr(pos_begin, comma_pos - pos_begin);
                     pos_begin = comma_pos + sep.length();
              }
               else
              {
                     tmp = str.substr(pos_begin);
                     pos_begin = comma_pos;
              }
              
               if (!tmp.empty())
              {
                      ret_.push_back(tmp);
                     tmp = "";
              }
       }
        return 0;
}


string trim(const string & str )
{
        string:: size_type pos = str.find_first_not_of( ' ');
        if (pos == string::npos)
       {
               return str;
       }
        string:: size_type pos2 = str.find_last_not_of( ' ');
        if (pos2 != string::npos)
       {
               return str.substr(pos, pos2 - pos + 1);
       }
        return str.substr(pos);
}
本文为“技术点滴”的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注