【C/C++】关于strstr函数和c_str()函数

 strstr(T,S) 函数:

这是一个字符串处理函数,用于判断字符串S是否是字符串T的子串。如果是,则该函数返回S在T中首次出现的地址;否则,返回NULL。

头文件:#include <string.h>

函数原型:char *strstr(const char *str1, const char *str2);

返回值:(1) 成功找到,返回在父串中第一次出现的位置的 char *指针 (2) 若未找到,即不存在这样的子串,返回 NULL。

#include<iostream>
#include<cstring>//头文件
using namespace std;
int main()
{
    char T[20],S[20];
    cin>>T;
    while(1){
        cin>>S;
        if(strstr(T,S))
            cout<<"YES"<<' ',//S为父串T的子串
            cout<<strstr(T,S)-T<<' ',//返回子串S在父串T中首次出现的下标位置
            cout<<strstr(T,S)<<endl;//返回父串S中从子串T开始出现的字符串
        else
            cout<<"NO"<<endl;//S不为父串T的子串
    }
    return 0;
}

运行结果如下:

如果用string类的字符串,需要先用c_str()函数把sring转化为char*。

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string T,S;
    cin>>T;
    while(1)
    {
        cin>>S;
        if(strstr(T.c_str(),S.c_str()))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}

关于c_str()函数

函数c_str()就是将C++的string转化为C的字符串数组,c_str()生成一个const char *指针,指向字符串的首地址。

char q[20]; 

string S="1234"; 

strcpy(q,S.c_str()); 

这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作。

语法: const char *c_str();

c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.,这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。

注意:一定要使用strcpy()函数等来操作c_str()返回的指针。

(以上摘自百度知道)

 

转载于:https://www.cnblogs.com/HOLLAY/p/11626554.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值