C++字符串find(),find_if(),substr(),getline()函数

1.find()函数返回值是唯一的,是string::size_type

rfind()函数和find函数返回值还有参数含义都是一样的,只不过rfind()是反向,并且rfind()函数在模糊查询中经常用到。

string s="-张三-李四-王五-杨六";
string::size_type n1,n2,n3;
n1=s.find(string,position);
n2=s.find(string);

string::size_type 是一个特殊的位置变量类型

当find函数有一个参数的时候,参数是要寻找的字符串,自动从零开始找,找到第一个返回位置变量(位置变量类似于字符串数组,从0开始);

有两个参数的时候,第一个是要找的字符串,第二个是要开始找的位置。

2.substr()函数,返回值是string

s.substr(position);
s.substr(position,num):

只有一个参数的时候是指从position开始取字符取到末尾(其实第二个参数的默认值是s.size()-参数1)

有两个参数的时候是从position开始取num个字符。

3.getline(cin,s)函数的第一个参数是输入流,第二个参数是字符串,用此输入法不会像cin一样输入遇到空格就停止输入,只有当到文件结束,遇到函数的定界符,输入达到最大限度,这三中欧情况才会停止输入。

举几个有关的例子

第一个是字符串倒序

string reverse(string s)
{
    long i,n=s.size();
    string temp=s;//要提前对字符串变量temp赋初值,是在为这个字符串分配空间,否则后面会报错
    for(i=0;i<n;++i)
    {
        temp[i]=s[n-i-1];//逆序,类似于字符串数组
    }
}

第二个是模糊查询

int main()
{
    string s="-王小一-89-李小二-92-张小天-100-刘小四-35-孟晓武-67";
    string::size_type n1,n2,n3,pos=0;
    string s1,name,score;
    while(true)
    {
        if(s.find("小",pos)!=string::npos)
        {
            n1=s.find("小",pos);
            n1=s.rfind("-",n1);
            n2=s.find("-",n1+1);
            n3=s.find("-",n2+1);
            name=s.substr(n1+1,n2-n1-1);
            score=s.substr(n2+1,n3-n2-1);
            cout<<"name="<<name<<endl;
            cout<<"score="<<score<<endl;
            pos=n3;//注意,每次要从已经找到了的后面开始找
        }
        else break;
        if(pos+1>=s.size())//判断是否到达边界
        break;
    }
}

第三个是数字转化成字符串

num2str(int m)
{
    string temp;
    stringstream ss;//字符串流是一种特殊的数据类型
    ss<<m;
    ss>>temp;
    return temp;
}

第三个是静态变量(函数)的使用

class a
{
private:
static string s1;//定义静态变量
public:
    static bool func()
    {
        s1//静态函数里面的变量一定要都是静态的;
    }
};
string a::s1="000";//字符串要为其分配空间

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值