zoukankan      html  css  js  c++  java
  • 【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()返回的指针。

    (以上摘自百度知道)

  • 相关阅读:
    wince开发_摩托罗拉MC3100_打开条码设置
    【Scala类型系统】自身类型(self type)引用
    Scala 基础新手教程
    ActiveMQ消息队列的使用及应用
    nginx配置服务器负载均衡
    ActiveMQ_Linux安装
    js调试工具Console命令详解
    微信JS-SDK选择相册或拍照并上传PHP实现
    微信公众平台开发接口PHP SDK完整版
    微信JS接口汇总及使用详解
  • 原文地址:https://www.cnblogs.com/HOLLAY/p/11626554.html
Copyright © 2011-2022 走看看