} } }

    C++ 实现Trim

    添加时间:2013-7-20 点击量:

    一、字符串去空格(没有处理惩罚字符串中心的空格)


    lTrim:除去字符串开首的空格    eg.    abc123     --> abc123    


    rTrim:除去字符串末尾的空格    eg.    abc123     -->     abc123


    Trim:除去字符串开首和末尾的空格  eg.    abc123     --> abc123


    品红色为空格



    1.去除开首的空格




    void lTrim(char  str)
    
    {
    int i , len ;

    len
    = strlen( str ) ;
    for( i=0; i<len; i++
    {
    if( str[i] != break ;
    }
    memmove(str,str
    +i,len-i+1);
    return ;
    }


    2.去除末尾的空格



    void rTrim(char  str)
    
    {
    int i,len ;

    len
    = strlen( str ) ;
    for(i = len-1;i>=0;i--
    {
    if( (str[i] != )&&(str[i]!=0 x0a)&&(str[i]!=0 x0d) ) break ;
    }
    str[i
    +1] = 0 ;
    return ;
    }


    3.去除开首和末尾的空格



    void Trim(char  str)
    
    {
    int i , len ;

    //先去除左边的空格
    len = strlen( str ) ;
    for( i=0; i<len; i++
    {
    if( str[i] != break ;
    }
    memmove(str,str
    +i,len-i+1);

    //再去除右边的空格
    len = strlen( str ) ;
    for(i = len-1; i>=0; i--
    {
    if(str[i] != break ;
    }
    str[i
    +1] = 0 ;

    return ;
    }


    也可以如许



    void Trim(char  str)
    
    {

      lTrim(str);

      rTrim(str);

    }



    注:1.这里没有处理惩罚字符串中心的空格  eg.   abc   123    -->  abc   123


      2.这里只去除了“空格”和末尾的“回车”、“换行”符,其他的可以按照须要添加




          (ASCⅡ 320 x20))    一个空格
    
    \t    (ASCⅡ 90 x09))   tab键
    \n    (ASCⅡ 100 x0A))   换行符
    \r    (ASCⅡ 130 x0D))   a carriage return.
    \0    (ASCⅡ 00 x00))   空字符
    \x0B   (ASCⅡ 110 x0B))   a vertical tab.




    二、从pstr中删除所有rmchar字符


      包含字符串中心的字符: eg.空格(     abc   123    -->  abc123  eg.逗号(,) ,,,abc,,,123,,, -->  abc123



    //从pstr中删除所有rmchar字符
    
    void TrimEx(char pstr,char rmchr)
    {
    char szOut[500];
    memset(szOut,
    0sizeof(szOut));
    if (strlen(pstr)>sizeof(szOut))
    return;

    int index=0;
    forint i=0;i<strlen(pstr);i++
    {
    if( pstr[i] != rmchr)
    {
    szOut[index
    ++]=pstr[i];
    }
    }
    strcpy(pstr,szOut);
    }



    三、附录:在网上找到的其他“去除开首和末尾空格”的办法,也拷贝下,按照须要选择


    A.



    inline string&  lTrim(string   &ss)   
    
    {
    string::iterator p=find_if(ss.begin(),ss.end(),not1(ptr_fun(isspace)));
    ss.erase(ss.begin(),p);
    return ss;
    }

    inline
    string& rTrim(string &ss)
    {
    string::reverse_iterator p=find_if(ss.rbegin(),ss.rend(),not1(ptr_fun(isspace)));
    ss.erase(p.
    base(),ss.end());
    return ss;
    }

    inline
    string& trim(string &st)
    {
    lTrim(rTrim(st));
    return st;
    }


    B.



    string LTrim(const string& str) 
    
    {
      
    return str.substr(str.find_first_not_of( \n\r\t));
    }

    string RTrim(const string& str)
    {
      
    return str.substr(0,str.find_last_not_of( \n\r\t)+1);
    }

    string Trim(const string& str)
    {
      
    return LTrim(RTrim(str));
    }



     迎接转载,便利的话,请注明出处,感谢!



    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: