【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()返回的指针。

(以上摘自百度知道)

 

posted @ 2019-10-06 10:55  HOLLAY  阅读(5134)  评论(0编辑  收藏  举报