• c与c++中的字符串


    在c++中,string本质上是一个类;

    string与char *有些区别:

    • char*是一个指针;
    • string是一个类,类内封装了char*,管理这一个字符串,是一个char*的容器

    在使用string类型时,要加上其头文件

    string的初始化操作

    string str1;

    最直接的初始化,一定要记住;

    后面几种了解就ok了

    第二种:

    1. const char* c="hello world!";
    2. string str2(c);

    用char*来存储,存储的是字符串常量,所以某些编译器需要加上const,为保持习惯,建议加上const

    第三种:

    1. const char* c="hello world!";
    2. string str2(c);
    3. string str3(str2);

    而在输出字符串的时候可以用字符串变量名+[]来输出,好似跟字符指针输出方式一摸一样

    所以我感觉:无论是字符指针还是string类名本质是都是字符串首个元素的地址,类似与数组一样,所以可以利用数组的方式进行输出

    其实对于字符串中字符的存取(c++中的字符串)还有一个方法就是调用at接口

    string的赋值:

    第一种方式:最常用基本

    1. string str;
    2. str="hello world!"
    3. cout<

    后面的了解下就欧克了

    1. //第二种
    2. str2=str1;
    3. //第三种
    4. string str3;
    5. str3='a';
    6. //第四种
    7. string str4;
    8. str4.assign("hello world");
    9. //感觉调用assign这个接口实在不如等号来的方便
    10. //第五种
    11. string str5;
    12. str5.assign("hello world",5);//把前五个字符赋值给str5;

    其实还有更多赋值方法,不过很鸡肋,大多用不到,就不多介绍了;

    string的拼接:重载+=操作符;append接口

    重载+=操作符已经封装在这个类内了,我们只需要调用就欧克了

    append接口在这里就不介绍了;

    string的查找和替换;

    查找:find;替换:rfind;

    int find(const string &str,int pos=0) const;查找str第一次出现的位置,从pos开始查找

    记住这个是从0开始索引,没有找到返回-1;

    rfind与find区别:rfind从右往左查找,但返回的值是从左往右计算;

    find从左往右查找,返回的值也是从左往右,

    其余该查找和替换的函数的不同参数就不介绍了,因为用不到;

    string比较;

    比较方式是通过ASCII值进行比较;

    >返回1,=返回0;<返回-1;

    int compare(const string& str)const;

    int compare(const char*s)const;

     string的插入和删除;

    插入:string& insert(int pos,const char*s);

    string& insert(int pos,const string& str);

    删除:string& erase(int pos,int n=pos);

    这些函数原型都超级简单,手巧几遍就可以轻松学会;

     string子串;

    函数原型:string substr(int pos=0,int n=npos)const;返回由pos开始的n个字符组成的字符串

     

    第二个参数可以理解为 从pos初开始的n个字符

     

    从下标0开始到第三个字符,就是下标0是第一个字符,下标1是第二个字符,下标2是第三个字符,所以只打印abc 

    string的两种输入方式:

    先介绍两种输出方式:cin/scanf和两种输出方式cout/printf

    scanf和printf是格式化输入输出,输入输出效率高,cin和cout是输入输出流,输入输出效率低

    输出流之所以慢,是因为是要先把输出的东西放入缓存区再输出;

    对于字符:cin的输入忽略空格和回车,scanf("%c",&i)等价于i=getchar(),空格和回车都会被输入;

    下面介绍用cin和scanf输入字符串:

    1. string s1;
    2. cin>>s1;

     cin可以直接输入;

    1. const int 10000
    2. string s1;
    3. s1.resize(N);
    4. scanf("%s",&s1[0]);

    用scanf输入就比较麻烦了;首先需要先预先指定s1的大小,然后需要在scanf的参数中取首元素地址;但运行速度是比cin快的;
     

  • 相关阅读:
    ACM练习——第一天
    本人开发Android视频编码和直播推流使用到的相关命令
    【zotero】解决换新电脑后PDF打不开
    Count( ? ) 效率的比较
    AWS SAP-C02教程9-节省成本
    Java面试复习体系总结(2021版,持续更新)
    尚硅谷Vue系列教程学习笔记(3)
    场景交互与场景漫游-路径漫游(7)
    用python selenium实现短视频一键推送
    【JavaSE】经典项目 图书管理系统
  • 原文地址:https://blog.csdn.net/qq_74350234/article/details/133418069