当前位置:C++技术网 > 资讯 > string系列:5 string截断两端的空格实现

string系列:5 string截断两端的空格实现

更新时间:2016-10-14 17:10:16浏览次数:1+次

    这是一个经常需要的小功能,然而string本身并没有提供,所以经常需要自己写。虽然代码量不大,但是重复的写,还是挺麻烦的。

    所以,就仔细写好,严格测试,然后记录下来,以后需要的时候再直接复制到项目中使用。代码使用效果图:

C++的string截断两端的空格实现

    以下是C++的string截断两端的空格实现代码:
string trim(string str,char ch)
{
    int s = str.find_first_not_of(ch);
    int e = str.find_last_not_of(ch);
    if (s==-1 && e==-1)return str;
    if (s==-1)
    {
        //结尾空格
        str = str.substr(0,e+1);
    }
    if (e==-1)
    {
        //开头空格
        str = str.substr(s,str.length());
    }
    if (s!=-1 && e!=-1)
    {
        str = str.substr(s,e-s+1);
    }
    return str;
}


    测试使用代码:
#include <iostream>
using namespace std;
string trim(string str,char ch)
{
    int s = str.find_first_not_of(ch);
    int e = str.find_last_not_of(ch);
    if (s==-1 && e==-1)return str;
    if (s==-1)
    {
        //结尾空格
        str = str.substr(0,e+1);
    }
    if (e==-1)
    {
        //开头空格
        str = str.substr(s,str.length());
    }
    if (s!=-1 && e!=-1)
    {
        str = str.substr(s,e-s+1);
    }
    return str;
}
void main()
{
    string str="    这是一个字符串[C++技术网www.cjjjs.com]       ";
    str = trim(str,' ');
    cout<<str.c_str()<<"追加";
    int i;
    cin>>i;
}

    trim函数说明:
1.第一个参数为被处理字符串,处理完后的字符串由返回值返回,被处理字符串本身不被改变。
2.第二个参数可以指定被去除的两端的字符,可以是任何字符,而不只是空白字符,在使用时自己填写。
3.函数可以对开头、结尾以及开头和结尾的字符进行截断。