zoukankan      html  css  js  c++  java
  • string_01

    内存释放和越界

      越界:(1)、复制越界,(2)、取值越界

    构造函数

      (1)、默认 空(无参)

      (2)、拷贝(const string &)

      (3)、带参数: const char *  // ZC: 经测试 和 查看源码,该构造函数也是将指针指向的内容复制一份,而非直接使用参数指针的值。

            int n, char c

    字符操作:

      [?]  ==> const char &    (ZC: 获取)

      at(?) ==> const char &    (ZC: 获取)

      [?]  ==> char        (ZC: 设置)

      at(?) ==> char        (ZC: 设置)

    [?]越界  ==> 内存错误 ==> 崩溃

    at(?)越界 ==> out_of_range异常

    出:

      const char *  string::c_str() const;

      ZC: const函数: 不能改变类中非静态成员的值

    进:

      int string::copy(char* s, int n, int pos=0) const;

      返回 实际拷贝的字符个数

      s : 为何不使用 "const char* s"?

      n : s中需要拷贝的字符的个数

      pos : s中 起始字符的索引值idx

    长度:(不包括结尾的'')

      int string::length() const;

      bool string::empty() const;

    赋值:

      string& = const string &

      string& assign(const string &)  // 这个和下面的有重复?

      string& assign(const char *s, int n);  // s中的前n个字符

      string& assign(const string &)

      string& assign(const string & s, int start, int n);

        start : s字符中的起始索引

        n : s中的n个字符

    连接:

      string& += const string &      尾部

      string& += const char *      尾部

      string& append(const char *);    尾部

      string& append(const char *s, int n);    s中的前n个字符,添加到尾部

      string& append(const string &);    尾部

      string& append(const string &s, int pos, int n);    尾部

        pos : s中字符的开始索引

        n : s中需要拷贝的字符个数

      string& append(int n, char c);    n个字符c,添加到尾部

    比较:

      int string::compare(const string *s) const;

      int string::compare(const char *s) const;

        >  返回1

        <  返回-1

        == 返回0

      ASCII码表,越前越小

    子串:

      string string::substr(int pos=0, int n=npos) const;

        pos : 开始索引

        n : n个字符(默认值npos是指string中的全部字符吗?)

    查找:

      int string::find(char c, int pos=0) const;  // 从pos开始找字符c的位置

      int string::find(const char *s, int pos=0) const;  // 从pos开始找字符串s的位置

      int string::find(const string &s, int pos=0) const;  // 从pos开始找字符串s的位置

        找不到,返回-1

        找到第一个符合条件的,就返回吗?

      

      int string::rfind(char c, int pos=0) const;  // 从pos开始找字符c的位置

      int string::rfind(const char *s, int pos=0) const;  // 从pos开始找字符串s的位置

      int string::rfind(const string &s, int pos=0) const;  // 从pos开始找字符串s的位置

        找不到,返回-1

        找到第一个符合条件的,就返回吗?

        返回的是 正向的索引值?还是逆向的索引值?

    插入:

      string& string::insert(int pos, const char *s);  // 在pos位置插入字符串s

      string& string::insert(int pos, const string &s);  // 在pos位置插入字符串s

      string& string::insert(int pos, int n, char c);  // 在pos位置插入 n个字符c

    删除:

      string& string::erase(int pos=0, int n=npos); // 删除pos开始的n个字符,返回删除后的字符串

    替换:

      string& string::replace(int pos, int n, const char *s);

      string& string::replace(int pos, int n, const string &s);

      这两个函数是分两个步骤执行的:

        (1)、删除 pos开始的 n个字符

        (2)、pos处 插入 字符串s

    交换:

      void string::swap(string & s2);

  • 相关阅读:
    Java虚拟机JVM学习01 流程概述
    Java虚拟机JVM学习02 类的加载概述
    Java虚拟机JVM学习03 连接过程:验证、准备、解析
    Java虚拟机JVM学习04 类的初始化
    代码块(1)
    AtomicInteger
    简单的爬信息
    String.valueOf(null) 报空指针
    图片预览上传
    护城河
  • 原文地址:https://www.cnblogs.com/cppskill/p/5412481.html
Copyright © 2011-2022 走看看