美文网首页
STL:string类的函数总结

STL:string类的函数总结

作者: 放纵的卡尔 | 来源:发表于2020-07-10 18:36 被阅读0次
STL:string类的函数总结
//
// Created by 87572 on 20/7/10.
//

#include "../include/STLOne.h"
#include <cstdlib>
#include <cstdio>

/**
 * K1:-------------字符串的构造---------------
 *
 * string 构造函数
          string();//创建一个空的字符串 例如: string str;
          string(const string& str);//使用一个string对象初始化另一个string对象
          string(const char* s);//使用字符串s初始化
          string(int n, char c);//使用n个字符c初始化

          3.1.2.2 string基本赋值操作
          string& operator=(const char* s);//char*类型字符串 赋值给当前的字符串
          string& operator=(const string &s);//把字符串s赋给当前的字符串
          string& operator=(char c);//字符赋值给当前的字符串
          string& assign(const char *s);//把字符串s赋给当前的字符串
          string& assign(const char *s, int n);//把字符串s的前n个字符赋给当前的字符串
          string& assign(const string &s);//把字符串s赋给当前字符串
          string& assign(int n, char c);//用n个字符c赋给当前字符串
          string& assign(const string &s, int start, int n);//将s从start开始n个字符赋值给字符串
 *
 */
using namespace std;

void useStrInit() {
    const char *str1 = "1123";
    const char str2[] = "1123";
    string str3 = str1;
    string str4 = str2;
    string str5 = str4.insert(0, 2, 'C');
    string str6 = string("Hello");
    string str7 = string(8, 'C');
    cout << str6 << endl;
    cout << str7 << endl;
}

/**
 * K2:-----------字符串的操作相关------------------
 *
 * 总结: 1.合理利用const函数 ,可以明确知道本身是不是被修改了. 不加const的后缀函数.则被修改了;反之亦反.
 *       2.入参的const修饰,可以知道这个变量不会被修改.
 *
 *  1.string存取字符操作
        char& operator[](int n);//通过[]方式取字符
        char& at(int n);//通过at方法获取字符
    2.string拼接操作
         string& operator+=(const string& str);//重载+=操作符
         string& operator+=(const char* str);//重载+=操作符
         string& operator+=(const char c);//重载+=操作符
         string& append(const char *s);//把字符串s连接到当前字符串结尾
         string& append(const char *s, int n);//把字符串s的前n个字符连接到当前字符串结尾
         string& append(const string &s);//同operator+=()
         string& append(const string &s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
         string& append(int n, char c);//在当前字符串结尾添加n个字符c
   3.1.2.5 string查找和替换
         int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找
         int find(const char* s, int pos = 0) const;  //查找s第一次出现位置,从pos开始查找
         int find(const char* s, int pos, int n) const;  //从pos位置查找s的前n个字符第一次位置
         int find(const char c, int pos = 0) const;  //查找字符c第一次出现位置
         int rfind(const string& str, int pos = npos) const;//查找str最后一次位置,从pos开始查找
         int rfind(const char* s, int pos = npos) const;//查找s最后一次出现位置,从pos开始查找
         int rfind(const char* s, int pos, int n) const;//从pos查找s的前n个字符最后一次位置
         int rfind(const char c, int pos = 0) const; //查找字符c最后一次出现位置
         string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str
         string& replace(int pos, int n, const char* s); //替换从pos开始的n个字符为字符串s
 *
 */
void useStrOperate() {

    string str = "HelloWorld!CPP";
    cout << &str << endl;
//    char c1=str.at(4);//越界不崩溃.但是会抛出异常.
//    char c2=str[4];//越界直接崩溃

    str += "abc";
    cout << &str << endl;//还是同一个字符串地址.
    size_t pos1 = str.find("Hello");//未查找到返回 -1
    size_t pos2 = str.rfind("l");

    cout << pos1 << endl;
    cout << pos2 << endl;
}

/**
 * K3:-----------字符串比较,插入,修改,截取------------------
 * 1.   compare函数在>时返回 1,<时返回 -1,==时返回 0。
        比较区分大小写,比较时参考字典顺序,排越前面的越小。
        大写的A比小写的a小。

        int compare(const string &s) const;//与字符串s比较
        int compare(const char *s) const;//与字符串s比较

   2.string子串
     string substr(int pos = 0, int n = npos) const;//返回由pos开始的n个字符组成的字符串

   3.string插入和删除操作
      string& insert(int pos, const char* s); //插入字符串
      string& insert(int pos, const string& str); //插入字符串
      string& insert(int pos, int n, char c);//在指定位置插入n个字符c
      string& erase(int pos, int n = npos);//删除从Pos开始的n个字符

 *
 *
 *
 */
void useStrFun1(){

    string str1="HelloWorld";
    string str2="HelloWorld";
    int cmpResult=str1.compare(str2);
    cout<<cmpResult<<endl;

    string strSub=str1.substr(2);
    cout<<strSub<<endl;

    str1.insert(8,"C");

    cout<<str1<<endl;


}

/**
 * K4: ------------字符串 c和String的相互转换-------------
 *  1.const char* 可以默认隐式转换成String
 *  2.但是char* 不可以
 *
 */

class STLPerson{

};

void  cStyle(){

    string str1="HelloWorld";
    string str2="HelloWorld";

    const char *cStyle1= str1.c_str();
    char *cStyle3= const_cast<char *>(cStyle1);

    const char *cStyle2= str1.c_str();

    cout<<&cStyle1<<endl;
    cout<<&cStyle2<<endl;
    cout<<&cStyle3<<endl;


    cout<<"---------------"<<endl;

    const STLPerson *stlPerson=new STLPerson();

    STLPerson *stlPerson1= const_cast<STLPerson *>(stlPerson);

    cout<<stlPerson<<endl;  //0x741230
    cout<<stlPerson1<<endl; //0x741230  引用的const_cast转换不会出现新的指针.但是char*会重新拷贝一个新的


    cout<<"---------------ptr---------"<<endl;
    const int a=100;
    const  int *pInt1=&a;
    int *pInt2= const_cast<int *>(pInt1);
    cout<<&a<<endl;
    cout<<pInt1<<endl;
    cout<<pInt2<<endl;

    cout<<"----------------"<<endl;
    const char * char1="123456";
    char * char2="123456";

    cout<<&char1<<endl;
    cout<<&char2<<endl;

    char *char3= const_cast<char *>(char1);
    char *char4= const_cast<char *>(char2);

    cout<<&char3<<endl;
    cout<<&char4<<endl;


    char char5[10]="123456";

    const char *char6= (char5);
    cout<<&char5<<endl;
    cout<<&char6<<endl;


   string str5= str1+"123";

   cout<<&str1<<endl;
   cout<<&str5<<endl;

   cout<<str1<<endl;
//    free(cStyle1);
}


相关文章

  • STL:string类的函数总结

    STL:string类的函数总结

  • String类常用方法总结

    String类常用方法总结 常用9种函数总结

  • 字符串分割

    用STL进行字符串的分割 涉及到string类的两个函数find和substr:1、find函数原型:size_t...

  • STL string类

    1. 为何需要使用string类 std::string和std::wstring分别模拟了普通字符串和宽字符串,...

  • string in c++

    string 类是 STL 中 basic_string 模板实例化得到的模板类。其定义如下:typedef ba...

  • 【Effective STL(6)】仿函数、仿函数类、函数等

    38 把仿函数类设计为用于值传递 STL函数对象在函数指针之后成型,因此STL习惯传给函数和从函数返回时,函数对象...

  • # STL实用技术专题

    STL实用技术专题 STL详细的说六大组件 1. string 相关函数 相关算法: 2. Vector 向量是表...

  • C++STL整理

    C++ STL中最基本以及最常用的类或容器string、vector、set、list、map string 处理...

  • Kotlin基础之函数

    普通函数 fun name(str : String) : String { }fun 函数名(参数名 : 参数类...

  • STL学习笔记之算法(二)

    仿函数、仿函数类、函数等 条款38:把仿函数类设计为用于值传递 STL中的习惯是当传给函数和从函数返回时函数对象也...

网友评论

      本文标题:STL:string类的函数总结

      本文链接:https://www.haomeiwen.com/subject/vtzmcktx.html